<html>
<head><meta charset="utf-8"><title>placeholder loans · t-compiler/wg-polonius · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/index.html">t-compiler/wg-polonius</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html">placeholder loans</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="178405750"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/178405750" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#178405750">(Oct 17 2019 at 18:03)</a>:</h4>
<p>I’ve been reimplementing illegal subset errors using placeholder loans, and it seems to work in tiny tests. Only in the Naive variant for now but this will work equally with DatafrogOpt (since it’s not using the full subset TC like the previous PR used to). I assumed we wanted to materialize those loans at the root of the cfg, but that’s not an information we currently have, so in the couple tests I was using the lowest point in the sorted cfg edges relation, is that sensible ? (with interning and the existing fact files it might not always work though)</p>



<a name="178428068"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/178428068" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#178428068">(Oct 17 2019 at 22:34)</a>:</h4>
<p>(and it kinda throws a wrench into the <code>LocationInsensitive</code> variant as a quick filter pre-pass idea)</p>



<a name="178498025"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/178498025" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#178498025">(Oct 18 2019 at 18:11)</a>:</h4>
<p>(to clarify: I mean <em>illegal subset errors</em> in general — not placeholder loans per se — "throw a wrench", as they aren't taken into account in the <code>LocationInsensitive</code> and thus <code>Hybrid</code> variants, and may always require running the full analysis if we can't approximate their absence quickly ?)</p>



<a name="178786039"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/178786039" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#178786039">(Oct 22 2019 at 19:09)</a>:</h4>
<p>I've been wanting to revisit that blog post for a while now</p>



<a name="178786056"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/178786056" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#178786056">(Oct 22 2019 at 19:09)</a>:</h4>
<p>I'm definitely convinced we want to take the "placeholder loan" approach--</p>



<a name="178786068"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/178786068" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#178786068">(Oct 22 2019 at 19:09)</a>:</h4>
<p>if for no other reason than that I think you should be able to stop at any point and replace all the "origins" with sets of loans</p>



<a name="178786070"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/178786070" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#178786070">(Oct 22 2019 at 19:09)</a>:</h4>
<p>without losing any information</p>



<a name="178786091"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/178786091" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#178786091">(Oct 22 2019 at 19:09)</a>:</h4>
<p>but without placeholder loans, you can't do that</p>



<a name="178786540"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/178786540" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#178786540">(Oct 22 2019 at 19:11)</a>:</h4>
<p>yeah it seems like the way to go indeed; wondering about how to pass the cfg root (if I've understood correctly) to "seed" them, and then eventually how to create those placeholder loans in rustc</p>



<a name="178796387"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/178796387" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#178796387">(Oct 22 2019 at 20:32)</a>:</h4>
<p>besides the common thought of "all the origins" vs "the ones interacting with potential errors", I wonder if this "stop at any point" thought is related to incr. or the query system, eg if we could avoid borrowck-ing a MIR which hasn't incrementally changed (eg in an IDE context; but even outside of that, as iirc just changing some comments today would mark everything as needing to be recompiled) or reconsidering our roots in Frank's work and looking at different rustc sessions as the source of differential datalog updates</p>



<a name="180474185"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/180474185" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#180474185">(Nov 12 2019 at 01:30)</a>:</h4>
<p>as I may still be on the road back from rustfest at the time of the meeting tomorrow, and Niko <a href="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/planning.20meeting.202019.2E11.2E05/near/179972931" title="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/planning.20meeting.202019.2E11.2E05/near/179972931">preferred a WIP PR for placeholder loans</a> here it is so we can discuss more easily <a href="https://github.com/rust-lang/polonius/pull/137" target="_blank" title="https://github.com/rust-lang/polonius/pull/137">https://github.com/rust-lang/polonius/pull/137</a></p>



<a name="181023543"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023543" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023543">(Nov 18 2019 at 15:10)</a>:</h4>
<p>I guess we can just continue from here <span class="user-mention" data-user-id="116113">@lqd</span></p>



<a name="181023556"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023556" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023556">(Nov 18 2019 at 15:10)</a>:</h4>
<p>Meh, Zulip is ok</p>



<a name="181023578"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023578" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023578">(Nov 18 2019 at 15:10)</a>:</h4>
<p>yeah the topic should be better :)</p>



<a name="181023580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023580">(Nov 18 2019 at 15:10)</a>:</h4>
<p>alright</p>



<a name="181023606"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023606" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023606">(Nov 18 2019 at 15:11)</a>:</h4>
<p>I'm skimming the PR, but I guess we can establish our... "goals" for today</p>



<a name="181023614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023614">(Nov 18 2019 at 15:11)</a>:</h4>
<p>oh and -- we should figure out exactly which other dates we will meet :)</p>



<a name="181023632"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023632" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023632">(Nov 18 2019 at 15:11)</a>:</h4>
<p>agreed</p>



<a name="181023637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023637">(Nov 18 2019 at 15:11)</a>:</h4>
<p>I created one calendar invite, I think I could make another for Wed, not sure if I can do more than that</p>



<a name="181023683"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023683" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023683">(Nov 18 2019 at 15:11)</a>:</h4>
<p>"one invite", for tomorrow that is ?</p>



<a name="181023727"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023727" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023727">(Nov 18 2019 at 15:12)</a>:</h4>
<p>(in addition to today's)</p>



<a name="181023743"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023743" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023743">(Nov 18 2019 at 15:12)</a>:</h4>
<p>er, yes</p>



<a name="181023791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023791">(Nov 18 2019 at 15:12)</a>:</h4>
<p>wrt goals I was thinking:</p>
<ul>
<li>quickly go over the PR</li>
<li>checking with you the approach and "open questions" (nbd really)<br>
(cont)</li>
</ul>



<a name="181023810"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023810" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023810">(Nov 18 2019 at 15:13)</a>:</h4>
<p>Yeah</p>



<a name="181023814"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023814" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023814">(Nov 18 2019 at 15:13)</a>:</h4>
<p>I think ideally we would try to end with the PR merged :)</p>



<a name="181023821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023821">(Nov 18 2019 at 15:13)</a>:</h4>
<p>possibly after tweaks</p>



<a name="181023829"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023829" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023829">(Nov 18 2019 at 15:13)</a>:</h4>
<ul>
<li>talking about implementing fact generation in rustc</li>
<li>checking errors in rustc</li>
<li>opening a rustc PR if time permits</li>
</ul>



<a name="181023835"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023835" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023835">(Nov 18 2019 at 15:13)</a>:</h4>
<p>right</p>



<a name="181023845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023845">(Nov 18 2019 at 15:13)</a>:</h4>
<p>that reminds me that</p>



<a name="181023851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023851">(Nov 18 2019 at 15:13)</a>:</h4>
<p>since my normal desktop server died</p>



<a name="181023902"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023902" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023902">(Nov 18 2019 at 15:14)</a>:</h4>
<p>I acutally have to get my laptop to build rustc, I've never tried I don't think</p>



<a name="181023910"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023910" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023910">(Nov 18 2019 at 15:14)</a>:</h4>
<p>oh :)</p>



<a name="181023925"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023925" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023925">(Nov 18 2019 at 15:14)</a>:</h4>
<p>mostly this means running <code>apt-get</code> I .. hope</p>



<a name="181023935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023935">(Nov 18 2019 at 15:14)</a>:</h4>
<p>but anyway</p>



<a name="181023943"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023943" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023943">(Nov 18 2019 at 15:14)</a>:</h4>
<p>let's look at the PR</p>



<a name="181023949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023949">(Nov 18 2019 at 15:14)</a>:</h4>
<p>let's do it</p>



<a name="181023977"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181023977" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181023977">(Nov 18 2019 at 15:15)</a>:</h4>
<p>so a lot of the early commits are to the parser itself, for unit tests</p>



<a name="181024012"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024012" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024012">(Nov 18 2019 at 15:15)</a>:</h4>
<p>and other basic to add facts to the inputs and output</p>



<a name="181024031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024031">(Nov 18 2019 at 15:15)</a>:</h4>
<p>and the most interesting one is <a href="https://github.com/rust-lang/polonius/pull/137/commits/31b79b5efe3e888f247c407171941e61280fc841" target="_blank" title="https://github.com/rust-lang/polonius/pull/137/commits/31b79b5efe3e888f247c407171941e61280fc841">https://github.com/rust-lang/polonius/pull/137/commits/31b79b5efe3e888f247c407171941e61280fc841</a></p>



<a name="181024108"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024108" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024108">(Nov 18 2019 at 15:16)</a>:</h4>
<blockquote>
<p>only the Naive variant has these errors for now, until we're a bit more sure this is a valid direction, and then I'll apply the technique to the DatafrogOpt variant</p>
</blockquote>



<a name="181024133"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024133" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024133">(Nov 18 2019 at 15:16)</a>:</h4>
<p>we should discuss again whether we can remove <code>DatafrogOpt</code> for now (but not yet)</p>



<a name="181024170"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024170" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024170">(Nov 18 2019 at 15:17)</a>:</h4>
<p>yeah I remember you don't like having many variants for now :)</p>



<a name="181024182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024182">(Nov 18 2019 at 15:17)</a>:</h4>
<blockquote>
<p>I assumed the placeholder loans should be seeded into requires (AKA contains) at the root of the CFG, but getting this root uses an heuristic (the first edge in the cfg_edge relation) which probably holds for rustc and unit-tests, but not always for interned .facts files like we have in our input datasets, so maybe the root should be passed to the input with the other relations.</p>
</blockquote>



<a name="181024191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024191">(Nov 18 2019 at 15:17)</a>:</h4>
<p>this seems not entirely clear</p>



<a name="181024196"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024196" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024196">(Nov 18 2019 at 15:17)</a>:</h4>
<p>I sort of remember this now from when I was thinking about it</p>



<a name="181024198"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024198" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024198">(Nov 18 2019 at 15:17)</a>:</h4>
<p>(and datafrogopt is mostly related to performance, which we're trying to put aside for now)</p>



<a name="181024214"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024214" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024214">(Nov 18 2019 at 15:17)</a>:</h4>
<p>(right, I mostly just don't want to expend mental energy there yet)</p>



<a name="181024286"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024286" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024286">(Nov 18 2019 at 15:18)</a>:</h4>
<p>what is not entirely clear, that the heuristic holds or that the loans need to be seeded at the root ?</p>



<a name="181024313"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024313" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024313">(Nov 18 2019 at 15:18)</a>:</h4>
<p>well, both</p>



<a name="181024316"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024316" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024316">(Nov 18 2019 at 15:18)</a>:</h4>
<p>but I meant more the latter</p>



<a name="181024318"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024318" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024318">(Nov 18 2019 at 15:18)</a>:</h4>
<p>:)</p>



<a name="181024334"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024334" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024334">(Nov 18 2019 at 15:18)</a>:</h4>
<p>in particular,</p>



<a name="181024341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024341">(Nov 18 2019 at 15:18)</a>:</h4>
<p>yeah I'm not sure about this either</p>



<a name="181024351"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024351" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024351">(Nov 18 2019 at 15:18)</a>:</h4>
<p>I'm wondering if it suffices to seed at the root, it seems like you just want this to be true "everywhere"</p>



<a name="181024393"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024393" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024393">(Nov 18 2019 at 15:19)</a>:</h4>
<p>I guess</p>



<a name="181024405"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024405" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024405">(Nov 18 2019 at 15:19)</a>:</h4>
<p>so long as the placeholder region is never "dead" (which I think we already require)</p>



<a name="181024413"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024413" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024413">(Nov 18 2019 at 15:19)</a>:</h4>
<p>then if you inject it at the root, it will flow to all <em>live</em> code at least</p>



<a name="181024429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024429">(Nov 18 2019 at 15:19)</a>:</h4>
<p>yeah</p>



<a name="181024498"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024498" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024498">(Nov 18 2019 at 15:20)</a>:</h4>
<p>also I was, maybe wrongly, trying to avoid cases where we materialize something "everywhere" (to try to repeat the OOM-cases)</p>



<a name="181024505"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024505" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024505">(Nov 18 2019 at 15:20)</a>:</h4>
<p>I'm not sure if it's a problem for it not to reach dead code</p>



<a name="181024507"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024507" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024507">(Nov 18 2019 at 15:20)</a>:</h4>
<p>this is what I was pondering</p>



<a name="181024520"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024520" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024520">(Nov 18 2019 at 15:20)</a>:</h4>
<p>but regardless it seems like it'd be "simpler" to just inject everywhere</p>



<a name="181024531"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024531" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024531">(Nov 18 2019 at 15:20)</a>:</h4>
<blockquote>
<p>also I was, maybe wrongly, trying to avoid cases where we materialize something "everywhere"</p>
</blockquote>
<p>no, I mean this is not wrong</p>



<a name="181024538"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024538" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024538">(Nov 18 2019 at 15:20)</a>:</h4>
<p>it surely has a runtime cost,</p>



<a name="181024546"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024546" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024546">(Nov 18 2019 at 15:20)</a>:</h4>
<p>or else results in multiplied rules</p>



<a name="181024567"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024567" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024567">(Nov 18 2019 at 15:21)</a>:</h4>
<p>otoh, we're going to have the same <em>effect</em> by injecting it at the root</p>



<a name="181024568"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024568" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024568">(Nov 18 2019 at 15:21)</a>:</h4>
<p>and letting it propagate</p>



<a name="181024574"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024574" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024574">(Nov 18 2019 at 15:21)</a>:</h4>
<p>and if we acknowledge it explicitly</p>



<a name="181024576"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024576" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024576">(Nov 18 2019 at 15:21)</a>:</h4>
<p>we are more able to optimize</p>



<a name="181024578"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024578" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024578">(Nov 18 2019 at 15:21)</a>:</h4>
<p>would you rather be conservative and materialize them at all points first ?</p>



<a name="181024601"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024601" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024601">(Nov 18 2019 at 15:21)</a>:</h4>
<p>I tend to think we should</p>



<a name="181024605"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024605" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024605">(Nov 18 2019 at 15:21)</a>:</h4>
<p>it seems simpler</p>



<a name="181024652"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024652" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024652">(Nov 18 2019 at 15:22)</a>:</h4>
<p>I am also thinking of examples like this</p>



<a name="181024657"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024657" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024657">(Nov 18 2019 at 15:22)</a>:</h4>
<p>which are "sort of related"</p>



<a name="181024675"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024675" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024675">(Nov 18 2019 at 15:22)</a>:</h4>
<div class="codehilite"><pre><span></span><span class="k">fn</span> <span class="nf">foo</span><span class="p">(</span><span class="n">x</span>: <span class="kp">&amp;</span><span class="na">&#39;a</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="nb">Vec</span><span class="o">&lt;&amp;</span><span class="na">&#39;b</span><span class="w"> </span><span class="kt">u32</span><span class="o">&gt;</span><span class="p">,</span><span class="w"> </span><span class="n">y</span>: <span class="kp">&amp;</span><span class="na">&#39;c</span><span class="w"> </span><span class="kt">u32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="k">loop</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">        </span><span class="n">x</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="n">y</span><span class="p">);</span><span class="w"></span>
<span class="w">    </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>



<a name="181024682"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024682" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024682">(Nov 18 2019 at 15:22)</a>:</h4>
<p>in some variations of NLL, this was accepted, because the function never returned</p>



<a name="181024700"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024700" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024700">(Nov 18 2019 at 15:22)</a>:</h4>
<p>oh interesting</p>



<a name="181024714"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024714" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024714">(Nov 18 2019 at 15:23)</a>:</h4>
<p>there's a case to be made that this is "ok"</p>



<a name="181024725"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024725" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024725">(Nov 18 2019 at 15:23)</a>:</h4>
<p>e.g., nobody can ever read the vec again</p>



<a name="181024732"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024732" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024732">(Nov 18 2019 at 15:23)</a>:</h4>
<p>(I'm ignoring panics here, in any case)</p>



<a name="181024764"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024764" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024764">(Nov 18 2019 at 15:23)</a>:</h4>
<p>but we decided that it felt wrong, and I think arielb1 had a convincing example why that was which I've forgotten now</p>



<a name="181024787"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024787" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024787">(Nov 18 2019 at 15:24)</a>:</h4>
<p>in any case this has more to do with the error case</p>



<a name="181024795"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024795" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024795">(Nov 18 2019 at 15:24)</a>:</h4>
<p>ok yeah let's do this then</p>



<a name="181024832"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024832" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024832">(Nov 18 2019 at 15:24)</a>:</h4>
<p>i.e., it's an error wherever it occurs</p>



<a name="181024840"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024840" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024840">(Nov 18 2019 at 15:24)</a>:</h4>
<p>we don't <em>just</em> check for errors at "exit nodes"</p>



<a name="181024859"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024859" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024859">(Nov 18 2019 at 15:24)</a>:</h4>
<p>so here's another question</p>



<a name="181024862"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024862" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024862">(Nov 18 2019 at 15:24)</a>:</h4>
<p>do we have a canonical write-up of the naive rules in datalog form ?</p>



<a name="181024871"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024871" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024871">(Nov 18 2019 at 15:24)</a>:</h4>
<p>also, are we actually publishing the book successfully?</p>



<a name="181024878"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024878" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024878">(Nov 18 2019 at 15:25)</a>:</h4>
<p>I think the answer to both is no :)</p>



<a name="181024897"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024897" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024897">(Nov 18 2019 at 15:25)</a>:</h4>
<p>but I'd like the answer to both to be yes, and to have that write-up be in the book</p>



<a name="181024906"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024906" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024906">(Nov 18 2019 at 15:25)</a>:</h4>
<p>we are publishing the book</p>



<a name="181024912"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024912" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024912">(Nov 18 2019 at 15:25)</a>:</h4>
<p>ok, that's good</p>



<a name="181024922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024922">(Nov 18 2019 at 15:25)</a>:</h4>
<p>but don't have a canonical version of the rules I don't think, yet</p>



<a name="181024928"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024928" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024928">(Nov 18 2019 at 15:25)</a>:</h4>
<p>oh I think it was <em>salsa</em> where I screwed that up months ago and have not gotten around to fixing it yet</p>



<a name="181024947"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024947" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024947">(Nov 18 2019 at 15:25)</a>:</h4>
<p>ok, that should be easy enough to extract from the naive secction I guess</p>



<a name="181024949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024949">(Nov 18 2019 at 15:25)</a>:</h4>
<p>chalk also had problems</p>



<a name="181024959"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024959" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024959">(Nov 18 2019 at 15:25)</a>:</h4>
<p>yes, chalk also has problems</p>



<a name="181024960"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024960" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024960">(Nov 18 2019 at 15:25)</a>:</h4>
<p>sigh</p>



<a name="181024963"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024963" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024963">(Nov 18 2019 at 15:25)</a>:</h4>
<p>I do have the old ones I think</p>



<a name="181024975"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181024975" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181024975">(Nov 18 2019 at 15:26)</a>:</h4>
<p>Pietro fixed them btw</p>



<a name="181025021"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025021" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025021">(Nov 18 2019 at 15:26)</a>:</h4>
<p><span aria-label="tada" class="emoji emoji-1f389" role="img" title="tada">:tada:</span></p>



<a name="181025030"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025030" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025030">(Nov 18 2019 at 15:26)</a>:</h4>
<p>but ok <a href="https://rust-lang.github.io/polonius/" target="_blank" title="https://rust-lang.github.io/polonius/">https://rust-lang.github.io/polonius/</a> works, yes</p>



<a name="181025044"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025044" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025044">(Nov 18 2019 at 15:26)</a>:</h4>
<p>maybe we can make a hackmd now</p>



<a name="181025049"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025049" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025049">(Nov 18 2019 at 15:26)</a>:</h4>
<p>that has the canonical rules</p>



<a name="181025050"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025050" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025050">(Nov 18 2019 at 15:26)</a>:</h4>
<p>I do have the ones I used to test on Soufflé with IIRC, where we had the rules "duplicated" with universal_regions</p>



<a name="181025054"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025054" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025054">(Nov 18 2019 at 15:26)</a>:</h4>
<p>I can do that</p>



<a name="181025142"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025142" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025142">(Nov 18 2019 at 15:27)</a>:</h4>
<p>I might be able to find a more recent version but otherwise: <a href="https://gist.github.com/lqd/355588dd6ab9b852469110edc8f6192f" target="_blank" title="https://gist.github.com/lqd/355588dd6ab9b852469110edc8f6192f">https://gist.github.com/lqd/355588dd6ab9b852469110edc8f6192f</a></p>



<a name="181025163"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025163" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025163">(Nov 18 2019 at 15:27)</a>:</h4>
<p>(it also lacks liveness/initialization)</p>



<a name="181025172"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025172" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025172">(Nov 18 2019 at 15:27)</a>:</h4>
<p>(and errors ...)</p>



<a name="181025254"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025254" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025254">(Nov 18 2019 at 15:28)</a>:</h4>
<p>yes so</p>



<a name="181025258"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025258" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025258">(Nov 18 2019 at 15:28)</a>:</h4>
<p>one of the reasons I'm talking about this</p>



<a name="181025262"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025262" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025262">(Nov 18 2019 at 15:28)</a>:</h4>
<p>is that I'd like to have this so we can talk about liveness/init in those terms too</p>



<a name="181025269"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025269" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025269">(Nov 18 2019 at 15:28)</a>:</h4>
<p><a href="https://hackmd.io/CGMNjt1hR_qYtsR9hgdGmw" target="_blank" title="https://hackmd.io/CGMNjt1hR_qYtsR9hgdGmw">hackmd document</a></p>



<a name="181025304"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025304" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025304">(Nov 18 2019 at 15:29)</a>:</h4>
<p>I guess it will also let us tweak names ;)</p>



<a name="181025470"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025470" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025470">(Nov 18 2019 at 15:30)</a>:</h4>
<p>I'm reconciling this against <a href="http://naive.rs" target="_blank" title="http://naive.rs">naive.rs</a> right now</p>



<a name="181025697"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025697" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025697">(Nov 18 2019 at 15:33)</a>:</h4>
<p>Ok, this looks roughly complete?</p>



<a name="181025707"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025707" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025707">(Nov 18 2019 at 15:33)</a>:</h4>
<p>I don't think we should go overboard with the <code>.output</code> and so forth</p>



<a name="181025708"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025708" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025708">(Nov 18 2019 at 15:33)</a>:</h4>
<p>yeah</p>



<a name="181025712"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025712" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025712">(Nov 18 2019 at 15:33)</a>:</h4>
<p>but it doesn't matter really</p>



<a name="181025719"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025719" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025719">(Nov 18 2019 at 15:33)</a>:</h4>
<p>ok, so, to add placeholder loans is fairly minimal...</p>



<a name="181025728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025728">(Nov 18 2019 at 15:33)</a>:</h4>
<p>(I'm really restraining myself from doing a mass rename here. This is hard.)</p>



<a name="181025740"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025740" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025740">(Nov 18 2019 at 15:33)</a>:</h4>
<p>maybe just note at the point your thoughts about renaming</p>



<a name="181025794"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025794" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025794">(Nov 18 2019 at 15:34)</a>:</h4>
<p>and I'll take care of it soon</p>



<a name="181025854"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025854" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025854">(Nov 18 2019 at 15:35)</a>:</h4>
<p>what should we call <code>requires</code>... idk. something else though =)</p>



<a name="181025889"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025889" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025889">(Nov 18 2019 at 15:35)</a>:</h4>
<p>anyway for placeholder loans, I think you added an input, right, that identifies the placeholder regions + loans?</p>



<a name="181025909"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025909" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025909">(Nov 18 2019 at 15:35)</a>:</h4>
<p>e.g., extend <code>universal_region</code> perhaps to <code>placeholder_region(R, L)</code>?</p>



<a name="181025916"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025916" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025916">(Nov 18 2019 at 15:35)</a>:</h4>
<p>I should look what you actually did in your PR...</p>



<a name="181025974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025974">(Nov 18 2019 at 15:36)</a>:</h4>
<p>ah, right, and we need <code>known_subset</code></p>



<a name="181025976"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025976" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025976">(Nov 18 2019 at 15:36)</a>:</h4>
<p>yeah</p>



<a name="181025994"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181025994" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181025994">(Nov 18 2019 at 15:36)</a>:</h4>
<p>I was thinking of needing to fuse <code>universal_regions</code> with their loans</p>



<a name="181026004"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026004" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026004">(Nov 18 2019 at 15:36)</a>:</h4>
<p>so that it's more "a unit of information" but couljd be done later</p>



<a name="181026037"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026037" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026037">(Nov 18 2019 at 15:37)</a>:</h4>
<p>and I seeded <code>requires</code> with <code>placeholder_loans</code> at the cfg root</p>



<a name="181026047"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026047" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026047">(Nov 18 2019 at 15:37)</a>:</h4>
<p>I'll add that as a WIP</p>



<a name="181026103"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026103" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026103">(Nov 18 2019 at 15:38)</a>:</h4>
<p>(or just <code>requires</code> everywhere)</p>



<a name="181026136"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026136" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026136">(Nov 18 2019 at 15:38)</a>:</h4>
<p>I think I would just make the input be <code>placeholder_data(region, loan)</code> or something like that</p>



<a name="181026160"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026160" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026160">(Nov 18 2019 at 15:39)</a>:</h4>
<p>then we can derive <code>placeholder_origins</code> (nee <code>universal_regions</code>) from that</p>



<a name="181026170"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026170" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026170">(Nov 18 2019 at 15:39)</a>:</h4>
<p>I'm mostly looking here to express the <em>rules</em> in the most elegant form</p>



<a name="181026174"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026174" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026174">(Nov 18 2019 at 15:39)</a>:</h4>
<p>ah interesting yes</p>



<a name="181026175"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026175" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026175">(Nov 18 2019 at 15:39)</a>:</h4>
<p>to aid in explanation / comprehension</p>



<a name="181026360"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026360" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026360">(Nov 18 2019 at 15:41)</a>:</h4>
<p>oh I think <code>requires</code> should just be <code>contains</code></p>



<a name="181026380"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026380" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026380">(Nov 18 2019 at 15:41)</a>:</h4>
<p>true!</p>



<a name="181026383"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026383" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026383">(Nov 18 2019 at 15:41)</a>:</h4>
<p>("origins" contain "loans")</p>



<a name="181026386"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026386" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026386">(Nov 18 2019 at 15:41)</a>:</h4>
<p>this is one we talked about but didn't get to yet</p>



<a name="181026552"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026552" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026552">(Nov 18 2019 at 15:43)</a>:</h4>
<p>seeding the placeholder loans like this </p>
<div class="codehilite"><pre><span></span><span class="nf">requires</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">B</span><span class="p">,</span> <span class="nv">P</span><span class="p">)</span> <span class="p">:-</span>
  <span class="nf">cfg_edge</span><span class="p">(</span><span class="nv">P</span><span class="p">,</span> <span class="k">_</span><span class="p">),</span>
  <span class="nf">placeholder_data</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span> <span class="nv">B</span><span class="p">).</span>
</pre></div>


<p>seems a bit weird</p>



<a name="181026563"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026563" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026563">(Nov 18 2019 at 15:43)</a>:</h4>
<p>heh</p>



<a name="181026564"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026564" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026564">(Nov 18 2019 at 15:43)</a>:</h4>
<p>(maybe also both points should be in there)</p>



<a name="181026569"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026569" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026569">(Nov 18 2019 at 15:43)</a>:</h4>
<p>we have no <code>node</code> relation</p>



<a name="181026577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026577">(Nov 18 2019 at 15:43)</a>:</h4>
<p>but we should probably make one?</p>



<a name="181026582"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026582" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026582">(Nov 18 2019 at 15:43)</a>:</h4>
<p>also, the  names in this doc (e.g., of atoms)</p>



<a name="181026584"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026584" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026584">(Nov 18 2019 at 15:44)</a>:</h4>
<p>are pretty out of date</p>



<a name="181026637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026637">(Nov 18 2019 at 15:44)</a>:</h4>
<p>(and hence I think out of sync with repo?)</p>



<a name="181026661"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026661" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026661">(Nov 18 2019 at 15:44)</a>:</h4>
<blockquote>
<p>but we should probably make one?</p>
</blockquote>
<p>I am debating if it should be an input, or derived from the others</p>



<a name="181026665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026665">(Nov 18 2019 at 15:44)</a>:</h4>
<p>but it seems like an input</p>



<a name="181026675"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026675" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026675">(Nov 18 2019 at 15:44)</a>:</h4>
<p>i.e., you can have a node with no adjacent edges...</p>



<a name="181026680"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026680" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026680">(Nov 18 2019 at 15:44)</a>:</h4>
<p>we could make a <code>node</code> / <code>point</code> relation, I'm not sure we need to materialize it for real</p>



<a name="181026715"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026715" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026715">(Nov 18 2019 at 15:45)</a>:</h4>
<p>yeah I'm debating about it</p>



<a name="181026724"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026724" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026724">(Nov 18 2019 at 15:45)</a>:</h4>
<p>it's not really a very interesting case</p>



<a name="181026737"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026737" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026737">(Nov 18 2019 at 15:45)</a>:</h4>
<blockquote>
<p>i.e., you can have a node with no adjacent edges...</p>
</blockquote>
<p>this one</p>



<a name="181026745"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026745" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026745">(Nov 18 2019 at 15:45)</a>:</h4>
<p>yeah very out of date, I think they must date back to our initial explorations last year</p>



<a name="181026804"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026804" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026804">(Nov 18 2019 at 15:46)</a>:</h4>
<p>(the names are out of sync for sure, but the rules seems likely in sync)</p>



<a name="181026821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026821">(Nov 18 2019 at 15:46)</a>:</h4>
<p>(but I will check later)</p>



<a name="181026894"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026894" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026894">(Nov 18 2019 at 15:47)</a>:</h4>
<p>anyway this looks correct to me</p>



<a name="181026899"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026899" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026899">(Nov 18 2019 at 15:47)</a>:</h4>
<p>seems simple enough</p>



<a name="181026903"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026903" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026903">(Nov 18 2019 at 15:47)</a>:</h4>
<p>right</p>



<a name="181026909"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026909" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026909">(Nov 18 2019 at 15:47)</a>:</h4>
<p>modulo the <code>node</code> relation bit</p>



<a name="181026986"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181026986" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181026986">(Nov 18 2019 at 15:48)</a>:</h4>
<p>albin mentioned they had once this question about the cfg root</p>



<a name="181027007"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027007" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027007">(Nov 18 2019 at 15:48)</a>:</h4>
<p>and moved away from requiring it so at least we shouldn't need for now</p>



<a name="181027026"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027026" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027026">(Nov 18 2019 at 15:48)</a>:</h4>
<p>hmm so</p>



<a name="181027052"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027052" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027052">(Nov 18 2019 at 15:49)</a>:</h4>
<p>never mind</p>



<a name="181027062"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027062" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027062">(Nov 18 2019 at 15:49)</a>:</h4>
<blockquote>
<p>and moved away from requiring it so at least we shouldn't need for now</p>
</blockquote>
<p>interesting</p>



<a name="181027063"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027063" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027063">(Nov 18 2019 at 15:49)</a>:</h4>
<p>ok</p>



<a name="181027160"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027160" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027160">(Nov 18 2019 at 15:50)</a>:</h4>
<p>you really do want to move to <code>node</code>s instead of <code>point</code>s</p>



<a name="181027165"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027165" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027165">(Nov 18 2019 at 15:50)</a>:</h4>
<p>I don't know :)</p>



<a name="181027172"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027172" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027172">(Nov 18 2019 at 15:50)</a>:</h4>
<p>I realized I am using single letters, too</p>



<a name="181027175"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027175" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027175">(Nov 18 2019 at 15:50)</a>:</h4>
<p>when we said we'd use <code>Node1</code> etc</p>



<a name="181027196"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027196" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027196">(Nov 18 2019 at 15:51)</a>:</h4>
<p>I forget what we said about capitalization, but I found the all-lower-case a bit harder to read...</p>



<a name="181027211"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027211" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027211">(Nov 18 2019 at 15:51)</a>:</h4>
<p>and the full words a bit long (line wrap)</p>



<a name="181027216"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027216" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027216">(Nov 18 2019 at 15:51)</a>:</h4>
<p>but I still think it's probably correct to use the full words</p>



<a name="181027231"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027231" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027231">(Nov 18 2019 at 15:51)</a>:</h4>
<p>anyway, so we've got our version of the rules</p>



<a name="181027235"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027235" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027235">(Nov 18 2019 at 15:51)</a>:</h4>
<p>we need to clean it up</p>



<a name="181027246"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027246" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027246">(Nov 18 2019 at 15:51)</a>:</h4>
<p>but about the <em>PR</em></p>



<a name="181027319"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027319" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027319">(Nov 18 2019 at 15:52)</a>:</h4>
<p>we can capitalize for sure</p>



<a name="181027345"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027345" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027345">(Nov 18 2019 at 15:52)</a>:</h4>
<p>should also help testing with regular datalog engines</p>



<a name="181027352"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027352" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027352">(Nov 18 2019 at 15:52)</a>:</h4>
<p>right</p>



<a name="181027356"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027356" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027356">(Nov 18 2019 at 15:52)</a>:</h4>
<div class="codehilite"><pre><span></span>.decl subset_errors(Origin1, Origin2, Point)
subset_errors(Origin1, Origin2, Point) :-
  placeholder_data(Origin1, Loan1),
  placeholder_origin(Origin2),
  requires(Origin2, Loan1, Point),
  !known_subset(Origin1, Origin2).
</pre></div>



<a name="181027437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027437">(Nov 18 2019 at 15:54)</a>:</h4>
<p>hmm so is <code>known_subset</code> transitive?</p>



<a name="181027490"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027490" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027490">(Nov 18 2019 at 15:54)</a>:</h4>
<p>I think we should do the transitive stuff on the polonius side, probably</p>



<a name="181027500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027500">(Nov 18 2019 at 15:54)</a>:</h4>
<p>so the input is probably <code>known_subset_base</code>?</p>



<a name="181027506"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027506" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027506">(Nov 18 2019 at 15:54)</a>:</h4>
<p>I assumed it was a flat list</p>



<a name="181027510"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027510" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027510">(Nov 18 2019 at 15:54)</a>:</h4>
<p>I am wondering if it should instead be <code>known_contains_base</code></p>



<a name="181027515"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027515" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027515">(Nov 18 2019 at 15:54)</a>:</h4>
<p>so yes, we'd need to do the transitivity inside polonius</p>



<a name="181027518"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027518" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027518">(Nov 18 2019 at 15:54)</a>:</h4>
<p>i.e., <code>known_contains_base(O:origin, L:loan)</code></p>



<a name="181027538"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027538" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027538">(Nov 18 2019 at 15:54)</a>:</h4>
<p>well regardless we can compute <code>known_contains</code></p>



<a name="181027606"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027606" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027606">(Nov 18 2019 at 15:55)</a>:</h4>
<p>I guess it's not very different</p>



<a name="181027608"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027608" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027608">(Nov 18 2019 at 15:55)</a>:</h4>
<p>but</p>



<a name="181027610"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027610" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027610">(Nov 18 2019 at 15:55)</a>:</h4>
<div class="codehilite"><pre><span></span>.decl subset_errors(Origin1, Origin2, Point)
subset_errors(Origin1, Origin2, Point) :-
  contains(Origin2, Loan1, Point),
  placeholder_origin(Origin2),
  placeholder_data(Origin1, Loan2)
  !known_contains(Origin2, Loan1).
</pre></div>



<a name="181027674"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027674" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027674">(Nov 18 2019 at 15:56)</a>:</h4>
<p>wait, that's wrong</p>



<a name="181027679"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027679" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027679">(Nov 18 2019 at 15:56)</a>:</h4>
<div class="codehilite"><pre><span></span>.decl subset_errors(Origin1, Origin2, Point)
subset_errors(Origin1, Origin2, Point) :-
  placeholder_data(Origin1, Loan1)
  placeholder_data(Origin2, _)
  contains(Origin2, Loan1, Point),
  !known_contains(Origin2, Loan1).
</pre></div>



<a name="181027689"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027689" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027689">(Nov 18 2019 at 15:56)</a>:</h4>
<p>anyway, I find that mildly easier to read</p>



<a name="181027707"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027707" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027707">(Nov 18 2019 at 15:56)</a>:</h4>
<p>(interestingly, I sort of prefer the <code>placeholder_data</code> both times just because it makes those two lines easier for me to parse)</p>



<a name="181027741"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027741" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027741">(Nov 18 2019 at 15:57)</a>:</h4>
<p>same for me :)</p>



<a name="181027758"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027758" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027758">(Nov 18 2019 at 15:57)</a>:</h4>
<p>(not sure about the name <code>placeholder_data</code>, maybe even just <code>placeholder</code> ?)</p>



<a name="181027771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027771">(Nov 18 2019 at 15:57)</a>:</h4>
<p>sounds nice</p>



<a name="181027856"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027856" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027856">(Nov 18 2019 at 15:58)</a>:</h4>
<p>we can just do <code>placeholder(O, _)</code> instead of <code>placeholder_origin</code>, as well</p>



<a name="181027858"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181027858" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181027858">(Nov 18 2019 at 15:58)</a>:</h4>
<p>(and also solves the terminology questions I had in the other doc PR)</p>



<a name="181028026"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028026" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028026">(Nov 18 2019 at 16:00)</a>:</h4>
<div class="codehilite"><pre><span></span>.decl known_contains(O:origin, L:loan)
known_contains(Origin1, Loan1) :-
  placeholder(Origin1, Loan1)
known_contains(Origin2, Loan1) :-
  known_contains(Origin1, Loan1),
  known_subset(Origin1, Origin2).
</pre></div>



<a name="181028028"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028028" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028028">(Nov 18 2019 at 16:00)</a>:</h4>
<p>?</p>



<a name="181028033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028033">(Nov 18 2019 at 16:00)</a>:</h4>
<p>I think that is correct</p>



<a name="181028044"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028044" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028044">(Nov 18 2019 at 16:00)</a>:</h4>
<p>/me was typing that hehe</p>



<a name="181028100"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028100" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028100">(Nov 18 2019 at 16:01)</a>:</h4>
<p>it looks sensible</p>



<a name="181028204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028204">(Nov 18 2019 at 16:02)</a>:</h4>
<div class="codehilite"><pre><span></span>contains(Origin, Loan, P) :-
  cfg_edge(P, _),
  placeholder(Origin, Loan).
</pre></div>



<a name="181028209"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028209" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028209">(Nov 18 2019 at 16:02)</a>:</h4>
<p>so I agree that we probably need the <em>targets</em> too, no?</p>



<a name="181028225"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028225" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028225">(Nov 18 2019 at 16:03)</a>:</h4>
<p>yeah, or <code>node</code></p>



<a name="181028233"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028233" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028233">(Nov 18 2019 at 16:03)</a>:</h4>
<p>I kind of think we should just make <code>node</code></p>



<a name="181028430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028430">(Nov 18 2019 at 16:05)</a>:</h4>
<p>yeah and in any case all these static rules should be "rust" code, eg Relation::extend and the likes, rather than using iterations and joins</p>



<a name="181028443"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028443" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028443">(Nov 18 2019 at 16:05)</a>:</h4>
<p>correct</p>



<a name="181028457"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028457" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028457">(Nov 18 2019 at 16:05)</a>:</h4>
<p>ok, so, what does it take to land the PR now...</p>



<a name="181028461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028461">(Nov 18 2019 at 16:05)</a>:</h4>
<p>it's slightly different than the hackmd</p>



<a name="181028526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028526">(Nov 18 2019 at 16:06)</a>:</h4>
<p>oh btw</p>



<a name="181028549"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028549" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028549">(Nov 18 2019 at 16:06)</a>:</h4>
<p>in the PR text I was mentioning a use-case extracted from rust, a dataset in the inputs folder</p>



<a name="181028584"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028584" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028584">(Nov 18 2019 at 16:06)</a>:</h4>
<p>subset-relations, which had 3 fns, and a case was confusing me, but looking more at the mir seems correct</p>



<a name="181028618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028618">(Nov 18 2019 at 16:07)</a>:</h4>
<p>(the desugaring, wrt lifetimes here, is still a bit confusing to me)</p>



<a name="181028740"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028740" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028740">(Nov 18 2019 at 16:08)</a>:</h4>
<p>where is this in the PR text?</p>



<a name="181028755"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028755" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028755">(Nov 18 2019 at 16:08)</a>:</h4>
<p>I wanted to ask, we always have two tuples in universal_regions, '0 and '1, what is this '1 ? I thought it was related to 'static, eg a local version, at some point, but I'm not so sure anymore</p>



<a name="181028761"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028761" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028761">(Nov 18 2019 at 16:08)</a>:</h4>
<p>ah</p>



<a name="181028766"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028766" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028766">(Nov 18 2019 at 16:08)</a>:</h4>
<p><code>'0</code> is <code>'static</code></p>



<a name="181028800"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028800" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028800">(Nov 18 2019 at 16:09)</a>:</h4>
<blockquote>
<p>I added simple dataset with 3 examples but it was partially manually constructed as I haven't added support for those facts to rustc yet, and while there is a function where an expected subset error occurs, I'm not sure it's about the correct origins (the .facts being a bit distant from the original rust code, and rustfest-induced lack of sleep, make it hard to be sure right now)</p>
</blockquote>
<p>this</p>



<a name="181028806"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028806" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028806">(Nov 18 2019 at 16:09)</a>:</h4>
<p>I think <code>'1</code> is representing the "entire fn body" -- I'm not sure this is a concept that makes sense in polonius actually</p>



<a name="181028824"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028824" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028824">(Nov 18 2019 at 16:09)</a>:</h4>
<p>let me go back and check the source</p>



<a name="181028847"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028847" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028847">(Nov 18 2019 at 16:09)</a>:</h4>
<p>this test is the first I've seen where something flowed into '1</p>



<a name="181028985"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181028985" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181028985">(Nov 18 2019 at 16:10)</a>:</h4>
<p>which example did it come from?</p>



<a name="181029016"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029016" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029016">(Nov 18 2019 at 16:11)</a>:</h4>
<p>./inputs/subset-relations/subset-relations.rs</p>



<a name="181029030"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029030" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029030">(Nov 18 2019 at 16:11)</a>:</h4>
<p>missing_subset</p>



<a name="181029077"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029077" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029077">(Nov 18 2019 at 16:12)</a>:</h4>
<p>(the 3 are basically the same wrt subset errors)</p>



<a name="181029161"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029161" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029161">(Nov 18 2019 at 16:12)</a>:</h4>
<p>and I manually added the placeholder loans (and a known subset to make <code>valid_subset</code> work)</p>



<a name="181029411"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029411" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029411">(Nov 18 2019 at 16:15)</a>:</h4>
<p>to land the PR: we'd want to be close to the parts of the hackmd related to <code>subset_errors</code>, <code>placeholder</code>, <code>known_subset</code> and its transitive version, right ? (that is, not to the complete hackmd where we already started renaming relations)</p>



<a name="181029589"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029589" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029589">(Nov 18 2019 at 16:17)</a>:</h4>
<p>yes</p>



<a name="181029600"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029600" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029600">(Nov 18 2019 at 16:17)</a>:</h4>
<p>I'm looking at that input now</p>



<a name="181029650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029650">(Nov 18 2019 at 16:17)</a>:</h4>
<p>I'll work on that then !</p>



<a name="181029727"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029727" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029727">(Nov 18 2019 at 16:18)</a>:</h4>
<p>btw if you need a rustc version working with polonius master I have branch ready for you (we haven't published nor updated rustc since the <code>FactTypes</code> PR)</p>



<a name="181029793"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029793" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029793">(Nov 18 2019 at 16:19)</a>:</h4>
<p>OK</p>



<a name="181029822"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029822" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029822">(Nov 18 2019 at 16:19)</a>:</h4>
<p>(<a href="https://github.com/lqd/rust/tree/placeholder_loans" target="_blank" title="https://github.com/lqd/rust/tree/placeholder_loans">https://github.com/lqd/rust/tree/placeholder_loans</a>)</p>



<a name="181029849"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029849" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029849">(Nov 18 2019 at 16:19)</a>:</h4>
<p>it doesn't generate the placeholder/known_subset facts though</p>



<a name="181029925"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029925" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029925">(Nov 18 2019 at 16:20)</a>:</h4>
<p>so <span class="user-mention" data-user-id="116113">@lqd</span> I think that the fn body region</p>



<a name="181029944"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029944" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029944">(Nov 18 2019 at 16:20)</a>:</h4>
<p>comes <em>after</em> the others</p>



<a name="181029951"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029951" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029951">(Nov 18 2019 at 16:20)</a>:</h4>
<p>(it doesn't look at <code>subset_errors</code> either <span aria-label="joy" class="emoji emoji-1f602" role="img" title="joy">:joy:</span>)</p>



<a name="181029954"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181029954" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181029954">(Nov 18 2019 at 16:20)</a>:</h4>
<p>i.e., <code>'0</code> is always static</p>



<a name="181030015"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030015" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030015">(Nov 18 2019 at 16:21)</a>:</h4>
<p>aaaaaaaaaaaah</p>



<a name="181030019"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030019" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030019">(Nov 18 2019 at 16:21)</a>:</h4>
<p>but '1 and '2 would be <code>'a</code> and <code>'b</code> respectively</p>



<a name="181030023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030023">(Nov 18 2019 at 16:21)</a>:</h4>
<p>and <code>'3</code> is the fn body</p>



<a name="181030045"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030045" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030045">(Nov 18 2019 at 16:21)</a>:</h4>
<p>that makes the result very clear now</p>



<a name="181030065"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030065" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030065">(Nov 18 2019 at 16:21)</a>:</h4>
<p>thank you :)</p>



<a name="181030068"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030068" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030068">(Nov 18 2019 at 16:21)</a>:</h4>
<p>for the <code>missing_subset</code> example, looking at the output from <code>-Zmir-dump=nll</code>, I get</p>
<div class="codehilite"><pre><span></span>| Free Region Mapping
| &#39;_#0r | Global | [&#39;_#0r, &#39;_#3r, &#39;_#1r, &#39;_#2r]
| &#39;_#1r | Local | [&#39;_#3r, &#39;_#1r]
| &#39;_#2r | Local | [&#39;_#3r, &#39;_#2r]
| &#39;_#3r | Local | [&#39;_#3r]
</pre></div>



<a name="181030135"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030135" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030135">(Nov 18 2019 at 16:22)</a>:</h4>
<p>which I think makes sense -- everything "outlives" the fn body</p>



<a name="181030146"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030146" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030146">(Nov 18 2019 at 16:22)</a>:</h4>
<p>yeah</p>



<a name="181030147"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030147" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030147">(Nov 18 2019 at 16:22)</a>:</h4>
<p>I guess that the fn body concept makes no sense in polonius but is also not actively harmful</p>



<a name="181030157"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030157" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030157">(Nov 18 2019 at 16:22)</a>:</h4>
<p>it's basically the union of all placeholder origins</p>



<a name="181030177"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030177" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030177">(Nov 18 2019 at 16:22)</a>:</h4>
<p>I checked afterwards that the renumbered 'a and 'b matched what I was expecting</p>



<a name="181030203"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030203" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030203">(Nov 18 2019 at 16:22)</a>:</h4>
<p>which it does, so only the numbering was confusing</p>



<a name="181030225"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030225" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030225">(Nov 18 2019 at 16:23)</a>:</h4>
<p>but yeah it's clear now :)</p>



<a name="181030238"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030238" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030238">(Nov 18 2019 at 16:23)</a>:</h4>
<blockquote>
<p>to land the PR: we'd want to be close to the parts of the hackmd related to <code>subset_errors</code>, <code>placeholder</code>, <code>known_subset</code> and its transitive version, right ? (that is, not to the complete hackmd where we already started renaming relations)</p>
</blockquote>
<p>I guess I will quickly skim the other commits --</p>



<a name="181030247"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030247" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030247">(Nov 18 2019 at 16:23)</a>:</h4>
<p>I could also try to make some edits to the polonius book</p>



<a name="181030319"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030319" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030319">(Nov 18 2019 at 16:24)</a>:</h4>
<p>I was wondering how we'd generate the placeholder loans in rustc ?</p>



<a name="181030355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030355">(Nov 18 2019 at 16:24)</a>:</h4>
<p>and I assumed we'd need to change <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_mir/borrow_check/nll/region_infer/struct.RegionInferenceContext.html#method.check_universal_regions" target="_blank" title="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_mir/borrow_check/nll/region_infer/struct.RegionInferenceContext.html#method.check_universal_regions">https://doc.rust-lang.org/nightly/nightly-rustc/rustc_mir/borrow_check/nll/region_infer/struct.RegionInferenceContext.html#method.check_universal_regions</a> to check for subset errors</p>



<a name="181030356"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030356" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030356">(Nov 18 2019 at 16:24)</a>:</h4>
<p>I think we would iterate over the "universal regions" and make one <code>placeholder</code> tuple for each</p>



<a name="181030377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030377">(Nov 18 2019 at 16:24)</a>:</h4>
<p>that said, I realize I'm a bit confused -- did you implement the rustc side of this on that branch?</p>



<a name="181030409"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030409" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030409">(Nov 18 2019 at 16:25)</a>:</h4>
<p>I did not implement the rustc side no</p>



<a name="181030441"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030441" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030441">(Nov 18 2019 at 16:25)</a>:</h4>
<p>I only have a branch where master compiles using the polonius wip branch, so that I could then implement the rustc side</p>



<a name="181030528"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030528" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030528">(Nov 18 2019 at 16:26)</a>:</h4>
<p>ah ok</p>



<a name="181030537"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030537" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030537">(Nov 18 2019 at 16:26)</a>:</h4>
<p>here I didn't know how to create a <code>BorrowIndex</code> for the placeholder loans tuples</p>



<a name="181030539"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030539" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030539">(Nov 18 2019 at 16:26)</a>:</h4>
<p>I could also help with that perhaps</p>



<a name="181030589"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030589" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030589">(Nov 18 2019 at 16:26)</a>:</h4>
<p>I can start just by jotting down a few notes</p>



<a name="181030610"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030610" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030610">(Nov 18 2019 at 16:27)</a>:</h4>
<p>(and was just expecting to check the polonius output in <code>check_universal_regions</code> but not yet where to thread the polonius output)</p>



<a name="181030631"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030631" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030631">(Nov 18 2019 at 16:27)</a>:</h4>
<p>that would be very helpful :)</p>



<a name="181030994"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181030994" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181030994">(Nov 18 2019 at 16:30)</a>:</h4>
<p>I'd like to have some tests to land the PR, there are not enough like this. I was thinking I'd implement the rustc side of fact gen and then integrate some of the ui tests into the inputs and check those in the unit tests, just to be on the safe side, in addition to having the ui tests work once the feature is complete and rustc can check the polonius-computed <code>subset_errors</code></p>



<a name="181031154"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031154" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031154">(Nov 18 2019 at 16:32)</a>:</h4>
<p>it seems like trying to do some renaming <em>in the code</em> would be dumb, we should wait until end of the week for that, agreed?</p>



<a name="181031203"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031203" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031203">(Nov 18 2019 at 16:32)</a>:</h4>
<p>agreed</p>



<a name="181031244"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031244" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031244">(Nov 18 2019 at 16:33)</a>:</h4>
<p>it'll probably be easier to do so once the different WIP work lands</p>



<a name="181031251"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031251" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031251">(Nov 18 2019 at 16:33)</a>:</h4>
<p>even if it's a bit uglier as it lands ?</p>



<a name="181031344"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031344" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031344">(Nov 18 2019 at 16:34)</a>:</h4>
<p>that was my thought</p>



<a name="181031359"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031359" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031359">(Nov 18 2019 at 16:34)</a>:</h4>
<p>but I would like to try to mvoe the docs to the new names</p>



<a name="181031374"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031374" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031374">(Nov 18 2019 at 16:34)</a>:</h4>
<p>maybe that's confuisng :/ but I think it helps me :)</p>



<a name="181031384"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031384" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031384">(Nov 18 2019 at 16:34)</a>:</h4>
<p>e.g. it took me some time to figure out <code>requires</code>, but <code>contains</code> reads nicely</p>



<a name="181031431"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031431" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031431">(Nov 18 2019 at 16:35)</a>:</h4>
<p>also, I'm inclined to just land your book changes</p>



<a name="181031443"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031443" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031443">(Nov 18 2019 at 16:35)</a>:</h4>
<p>and then try to read over them in place and make edits myself</p>



<a name="181031452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031452">(Nov 18 2019 at 16:35)</a>:</h4>
<p>any objection? I'm talking about <a href="https://github.com/rust-lang/polonius/issues/126" target="_blank" title="https://github.com/rust-lang/polonius/issues/126">rust-lang/polonius#126</a></p>



<a name="181031460"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031460" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031460">(Nov 18 2019 at 16:35)</a>:</h4>
<p>we could do both also</p>



<a name="181031552"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031552" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031552">(Nov 18 2019 at 16:36)</a>:</h4>
<p>you editing docs doesn't seem like the greatest use of your time, but it can be seen as notes of what to reach in the code :)</p>



<a name="181031582"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181031582" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181031582">(Nov 18 2019 at 16:36)</a>:</h4>
<p>yes, that was how I thought of it</p>



<a name="181032059"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032059" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032059">(Nov 18 2019 at 16:41)</a>:</h4>
<p>I think I'd like to rename <code>placeholder_loan</code> to <code>placeholder</code>, and then ultimately remove <code>universal_region</code> since it is used everywhere (including .facts in the repo)</p>



<a name="181032152"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032152" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032152">(Nov 18 2019 at 16:42)</a>:</h4>
<p>and/or compute <code>universal_regions</code> in terms of <code>placeholder</code> instead of doing both at once, since we effectively never use <code>universal_region</code></p>



<a name="181032172"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032172" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032172">(Nov 18 2019 at 16:43)</a>:</h4>
<p>I guess that is a difference between the hackmd and the real code</p>



<a name="181032182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032182">(Nov 18 2019 at 16:43)</a>:</h4>
<p>yes, I did that in the hackmd</p>



<a name="181032185"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032185" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032185">(Nov 18 2019 at 16:43)</a>:</h4>
<p>and I approve</p>



<a name="181032197"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032197" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032197">(Nov 18 2019 at 16:43)</a>:</h4>
<p>also, I reviewed the rest of the PR, which seems fine, I left a few stray comments</p>



<a name="181032208"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032208" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032208">(Nov 18 2019 at 16:43)</a>:</h4>
<p>(as instead of duplicating the rules we materialized all the free regions in the liveness)</p>



<a name="181032250"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032250" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032250">(Nov 18 2019 at 16:43)</a>:</h4>
<p>ok awesome thanks a lot</p>



<a name="181032254"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032254" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032254">(Nov 18 2019 at 16:43)</a>:</h4>
<p>yeah, we were lazy</p>



<a name="181032320"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032320" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032320">(Nov 18 2019 at 16:44)</a>:</h4>
<p>your datalog compiler might make a difference here?</p>



<a name="181032326"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032326" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032326">(Nov 18 2019 at 16:44)</a>:</h4>
<p>i.e., if we could write <code>;</code> rules...</p>



<a name="181032351"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032351" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032351">(Nov 18 2019 at 16:44)</a>:</h4>
<p>(or, even better, macros...)</p>



<a name="181032358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032358">(Nov 18 2019 at 16:44)</a>:</h4>
<p>interesting thought :)</p>



<a name="181032383"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032383" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032383">(Nov 18 2019 at 16:44)</a>:</h4>
<p>it could yeah</p>



<a name="181032406"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032406" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032406">(Nov 18 2019 at 16:45)</a>:</h4>
<p>(when it supports <code>;</code> ofc)</p>



<a name="181032465"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032465" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032465">(Nov 18 2019 at 16:45)</a>:</h4>
<p>(Vytautas added a bunch of syntax for rustql when we were at rustfest)</p>



<a name="181032471"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032471" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032471">(Nov 18 2019 at 16:45)</a>:</h4>
<p>Given OOM concerns I definitely think duplicating the rules is better</p>



<a name="181032487"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032487" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032487">(Nov 18 2019 at 16:45)</a>:</h4>
<p>Personally i'm ready to port polonius :)</p>



<a name="181032499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032499">(Nov 18 2019 at 16:45)</a>:</h4>
<p>yeah, even if they are ultimately about <code>equal</code> regions</p>



<a name="181032503"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032503" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032503">(Nov 18 2019 at 16:45)</a>:</h4>
<p>but that's a topic for another day I guess</p>



<a name="181032565"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032565" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032565">(Nov 18 2019 at 16:46)</a>:</h4>
<p>anyway I'm going to leave some notes re: rustc</p>



<a name="181032567"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032567" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032567">(Nov 18 2019 at 16:46)</a>:</h4>
<p>it still not generating a complete computation at the moment :) but we'll get there</p>



<a name="181032625"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032625" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032625">(Nov 18 2019 at 16:46)</a>:</h4>
<p>thanks a lot for the notes, it'll save me a bunch of time</p>



<a name="181032629"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032629" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032629">(Nov 18 2019 at 16:47)</a>:</h4>
<p>ps, I think I found I like "node"</p>



<a name="181032650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032650">(Nov 18 2019 at 16:47)</a>:</h4>
<p>curious about your opinion :) you seem to disagree</p>



<a name="181032656"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032656" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032656">(Nov 18 2019 at 16:47)</a>:</h4>
<p>but <code>cfg_node</code> relation pushed me over the edge</p>



<a name="181032687"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032687" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032687">(Nov 18 2019 at 16:47)</a>:</h4>
<p>I'm more used to nodes as being basic blocks which is not our case here but I don't have that strong of an opinion</p>



<a name="181032696"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032696" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032696">(Nov 18 2019 at 16:47)</a>:</h4>
<p>node is fine :)</p>



<a name="181032766"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032766" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032766">(Nov 18 2019 at 16:48)</a>:</h4>
<p>ugh, building rustc is like killing my computer =)</p>



<a name="181032775"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032775" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032775">(Nov 18 2019 at 16:48)</a>:</h4>
<p>/me remembers why he prefers to build on server</p>



<a name="181032783"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032783" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032783">(Nov 18 2019 at 16:48)</a>:</h4>
<p>:)</p>



<a name="181032808"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032808" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032808">(Nov 18 2019 at 16:48)</a>:</h4>
<p>I have built rustc on a 7y old macbook air, that was fun, and slow</p>



<a name="181032875"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181032875" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181032875">(Nov 18 2019 at 16:49)</a>:</h4>
<p>(but it's very helpful for polonius performance work) (to see when it's too slow)</p>



<a name="181033620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181033620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181033620">(Nov 18 2019 at 16:57)</a>:</h4>
<p>about <code>known_subset</code>, you mentioned:</p>
<blockquote>
<p>this doesn't seem useful in the new formulation, but maybe known_contains?</p>
</blockquote>
<p>ah this is about the debugging output, agreed</p>



<a name="181034431"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181034431" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181034431">(Nov 18 2019 at 17:05)</a>:</h4>
<p>do we eventually also want to move to uppercasing the datalog variables in code comments ?<br>
eg  from</p>
<div class="codehilite"><pre><span></span>/// `known_subset(origin1, origin2)` when the &quot;placeholder&quot; `origin1` is a known subset
/// of placeholder `origin2`.
pub known_subset: Vec&lt;(T::Origin, T::Origin)&gt;,
</pre></div>


<p>to</p>
<div class="codehilite"><pre><span></span>/// `known_subset(Origin1, Origin2)` when the &quot;placeholder&quot; `Origin1` is a known subset
/// of placeholder `Origin2`.
pub known_subset: Vec&lt;(T::Origin, T::Origin)&gt;,
</pre></div>


<p>?</p>



<a name="181034805"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181034805" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181034805">(Nov 18 2019 at 17:09)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> tough call :)</p>



<a name="181034819"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181034819" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181034819">(Nov 18 2019 at 17:09)</a>:</h4>
<p>I think I would prefer to do so though</p>



<a name="181034826"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181034826" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181034826">(Nov 18 2019 at 17:09)</a>:</h4>
<p>the mapping shouldn't be that hard</p>



<a name="181034862"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181034862" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181034862">(Nov 18 2019 at 17:09)</a>:</h4>
<p>yeah, and it's valuable to have a close relation to the rules themselves</p>



<a name="181034950"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181034950" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181034950">(Nov 18 2019 at 17:10)</a>:</h4>
<p>right</p>



<a name="181035133"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035133" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035133">(Nov 18 2019 at 17:12)</a>:</h4>
<p>btw <span class="user-mention" data-user-id="116113">@lqd</span> check you check the <a href="https://hackmd.io/CGMNjt1hR_qYtsR9hgdGmw?view#Compiler-notes" target="_blank" title="https://hackmd.io/CGMNjt1hR_qYtsR9hgdGmw?view#Compiler-notes">"compiler notes" section in the hackmd</a>?</p>



<a name="181035154"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035154" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035154">(Nov 18 2019 at 17:12)</a>:</h4>
<p>it turned out to be a bit thornier than I expected</p>



<a name="181035174"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035174" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035174">(Nov 18 2019 at 17:12)</a>:</h4>
<p>reading it now</p>



<a name="181035186"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035186" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035186">(Nov 18 2019 at 17:12)</a>:</h4>
<p>thornier for checking the errors or generating the input facts ?</p>



<a name="181035235"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035235" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035235">(Nov 18 2019 at 17:13)</a>:</h4>
<p>well both maybe ?</p>



<a name="181035253"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035253" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035253">(Nov 18 2019 at 17:13)</a>:</h4>
<p>it's not that bad really</p>



<a name="181035263"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035263" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035263">(Nov 18 2019 at 17:13)</a>:</h4>
<p>there's a few subtle bits</p>



<a name="181035277"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035277" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035277">(Nov 18 2019 at 17:13)</a>:</h4>
<p>I'm not sure if you're familiar with the <code>ClosureOutlivesRequirement</code> code?</p>



<a name="181035286"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035286" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035286">(Nov 18 2019 at 17:13)</a>:</h4>
<p>that is, the way we handle closures</p>



<a name="181035346"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035346" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035346">(Nov 18 2019 at 17:14)</a>:</h4>
<p>no especially familiar unfortunately</p>



<a name="181035365"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035365" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035365">(Nov 18 2019 at 17:14)</a>:</h4>
<p>it's actually not a big deal</p>



<a name="181035372"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035372" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035372">(Nov 18 2019 at 17:14)</a>:</h4>
<p>the main thing is</p>



<a name="181035383"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035383" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035383">(Nov 18 2019 at 17:14)</a>:</h4>
<p>when we type-check closures</p>



<a name="181035385"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035385" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035385">(Nov 18 2019 at 17:14)</a>:</h4>
<p>(I was thinking whether we'd end up having to tangle with closures heh)</p>



<a name="181035394"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035394" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035394">(Nov 18 2019 at 17:14)</a>:</h4>
<p>we only report <em>some</em> errors immediately</p>



<a name="181035414"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035414" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035414">(Nov 18 2019 at 17:15)</a>:</h4>
<p>the rest we propagated back to the closure's creator</p>



<a name="181035428"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035428" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035428">(Nov 18 2019 at 17:15)</a>:</h4>
<p>there are some comments on this somewhere I can find, but the details of how it works don't matter</p>



<a name="181035440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035440">(Nov 18 2019 at 17:15)</a>:</h4>
<p>the main thing is that the "handle error" code <em>sometimes</em> reports the error</p>



<a name="181035459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035459">(Nov 18 2019 at 17:15)</a>:</h4>
<p>ah yes the Option in check_universal_regions</p>



<a name="181035461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035461">(Nov 18 2019 at 17:15)</a>:</h4>
<p>and other types pushes it into the <code>ClosureOutlivesRequirement</code> struct</p>



<a name="181035480"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035480" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035480">(Nov 18 2019 at 17:15)</a>:</h4>
<p>that doesn't affect thsi code path but I thought it might be important context when reading the code and trying to figure out wtf is going on</p>



<a name="181035578"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035578" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035578">(Nov 18 2019 at 17:16)</a>:</h4>
<p>ah, here is the comment</p>



<a name="181035579"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035579" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035579">(Nov 18 2019 at 17:16)</a>:</h4>
<p>ah yeah thanks for this context, I remembered we push some of these obligations but didn't remember in which cases</p>



<a name="181035596"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035596" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035596">(Nov 18 2019 at 17:17)</a>:</h4>
<p>doc comment of <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc/mir/struct.ClosureRegionRequirements.html" target="_blank" title="https://doc.rust-lang.org/nightly/nightly-rustc/rustc/mir/struct.ClosureRegionRequirements.html">ClosureRegionRequirements</a></p>



<a name="181035613"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035613" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035613">(Nov 18 2019 at 17:17)</a>:</h4>
<p>oh nice</p>



<a name="181035619"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035619" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035619">(Nov 18 2019 at 17:17)</a>:</h4>
<p>hmm, that comment doesn't give as much context as I would hope</p>



<a name="181035625"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035625" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035625">(Nov 18 2019 at 17:17)</a>:</h4>
<p>though maybe it helps ;)</p>



<a name="181035631"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035631" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035631">(Nov 18 2019 at 17:17)</a>:</h4>
<p>it's more about the details of how things are encoded, not <em>why</em></p>



<a name="181035726"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035726" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035726">(Nov 18 2019 at 17:18)</a>:</h4>
<p>Anyway, so, the fact generation did seem a <em>touch</em> trickier than I thought</p>



<a name="181035730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035730">(Nov 18 2019 at 17:18)</a>:</h4>
<p>at the very least it's a good todo item for someone to add to the rustc-guide eventually :)</p>



<a name="181035740"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035740" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035740">(Nov 18 2019 at 17:18)</a>:</h4>
<p>in that we have to make "placeholder loans" which isn't a concept tha NLL has</p>



<a name="181035750"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035750" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035750">(Nov 18 2019 at 17:18)</a>:</h4>
<p>but I <em>think</em> we can just hack?</p>



<a name="181035752"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035752" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035752">(Nov 18 2019 at 17:18)</a>:</h4>
<p>the way I suggested</p>



<a name="181035771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035771">(Nov 18 2019 at 17:18)</a>:</h4>
<p>yeah I should go check what's in rustc guid</p>



<a name="181035782"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035782" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035782">(Nov 18 2019 at 17:19)</a>:</h4>
<p>for all that I talk about the guide, I feel like the NLL coverage leaves much to be desired :(</p>



<a name="181035788"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035788" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035788">(Nov 18 2019 at 17:19)</a>:</h4>
<p>the hack seems liek it should work</p>



<a name="181035841"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035841" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035841">(Nov 18 2019 at 17:19)</a>:</h4>
<p>your recent work about member constraints and general documentation made it a lot better tho</p>



<a name="181035880"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035880" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035880">(Nov 18 2019 at 17:20)</a>:</h4>
<p>yeah, I was just skimming</p>



<a name="181035915"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035915" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035915">(Nov 18 2019 at 17:20)</a>:</h4>
<p>it could be worse</p>



<a name="181035920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035920">(Nov 18 2019 at 17:20)</a>:</h4>
<p>anyway</p>



<a name="181035937"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181035937" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181035937">(Nov 18 2019 at 17:20)</a>:</h4>
<p>I know there are some comments somewhere wiht more details but maybe not one individual comment saying all the things</p>



<a name="181036000"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036000" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036000">(Nov 18 2019 at 17:21)</a>:</h4>
<blockquote>
<p>the hack seems liek it should work</p>
</blockquote>
<p>I think so too</p>



<a name="181036009"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036009" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036009">(Nov 18 2019 at 17:21)</a>:</h4>
<p>and it's super easy</p>



<a name="181036022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036022">(Nov 18 2019 at 17:21)</a>:</h4>
<p>anyway the main question mark that I wasn't sure about</p>



<a name="181036028"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036028" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036028">(Nov 18 2019 at 17:21)</a>:</h4>
<p>was how to handle the placeholder errors</p>



<a name="181036040"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036040" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036040">(Nov 18 2019 at 17:21)</a>:</h4>
<p>let me go sprinkle some links into the code</p>



<a name="181036055"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036055" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036055">(Nov 18 2019 at 17:21)</a>:</h4>
<p>I'll need to thread the polonius output somehow as well but that should be easier than the rest</p>



<a name="181036065"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036065" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036065">(Nov 18 2019 at 17:21)</a>:</h4>
<p>then I have to run and get lunch + have family meeting with the partner :)</p>



<a name="181036114"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036114" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036114">(Nov 18 2019 at 17:22)</a>:</h4>
<blockquote>
<p>I'll need to thread the polonius output somehow as well but that should be easier than the rest</p>
</blockquote>
<p>yeah, that seems pretty easy, just add parameters to a few fns</p>



<a name="181036129"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036129" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036129">(Nov 18 2019 at 17:22)</a>:</h4>
<p>right</p>



<a name="181036131"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036131" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036131">(Nov 18 2019 at 17:22)</a>:</h4>
<p>those fns already have like 2 dozen parametrs, what's one more <span aria-label="angel" class="emoji emoji-1f47c" role="img" title="angel">:angel:</span></p>



<a name="181036181"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036181" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036181">(Nov 18 2019 at 17:23)</a>:</h4>
<blockquote>
<p>then I have to run and get lunch + have family meeting with the partner :)</p>
</blockquote>
<p>of course :) we're nearing the end of the scheduled time, don't hesitate to go early as well</p>



<a name="181036207"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036207" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036207">(Nov 18 2019 at 17:23)</a>:</h4>
<p>thank you for your time already, it was super super helpful</p>



<a name="181036228"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036228" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036228">(Nov 18 2019 at 17:23)</a>:</h4>
<p>and I have an idea on how to complete the different next steps</p>



<a name="181036413"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036413" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036413">(Nov 18 2019 at 17:25)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> ok I added a few links and things</p>



<a name="181036418"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036418" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036418">(Nov 18 2019 at 17:25)</a>:</h4>
<p>that hopefully makes it a bit clearer what i'm talking about</p>



<a name="181036711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036711">(Nov 18 2019 at 17:28)</a>:</h4>
<p>yeah looking at it as you type :)</p>



<a name="181036718"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036718" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036718">(Nov 18 2019 at 17:28)</a>:</h4>
<p>ok, g2g, bbl! :)</p>



<a name="181036738"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181036738" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181036738">(Nov 18 2019 at 17:29)</a>:</h4>
<p>thanks a lot niko :) ttyl</p>



<a name="181078484"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181078484" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181078484">(Nov 19 2019 at 03:16)</a>:</h4>
<p>I do wonder whether <code>DatafrogOpt</code> is compatible with placeholder loans, or if its TC-avoidance could scare the placeholder loans away ^^ (most likely that I'm missing something trying to make it compute subset errors at 4AM). In any case most of the polonius-side of the work we mentioned earlier seems done</p>



<a name="181109949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181109949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181109949">(Nov 19 2019 at 13:21)</a>:</h4>
<p>hey <span class="user-mention" data-user-id="116083">@pnkfelix</span> :) I was wondering if you could point me to some borrowck code about universal regions: I'm trying to emit the universal regions relations as facts for polonius, but I'm not sure where to look for. I thought I should output <a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_mir/borrow_check/nll/type_check/free_region_relations/struct.UniversalRegionRelations.html" target="_blank" title="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_mir/borrow_check/nll/type_check/free_region_relations/struct.UniversalRegionRelations.html"><code>UniversalRegionRelations.outlives</code></a> but I don't see an easy way to do so (and it looks more like a builder even though you can query it)</p>



<a name="181110041"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181110041" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181110041">(Nov 19 2019 at 13:22)</a>:</h4>
<p>I do not have that info in my mental cache</p>



<a name="181110050"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181110050" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181110050">(Nov 19 2019 at 13:23)</a>:</h4>
<p>so I'm guessing it's probably not this</p>



<a name="181110082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181110082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181110082">(Nov 19 2019 at 13:23)</a>:</h4>
<p>ah ok, no worries :)</p>



<a name="181110177"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181110177" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181110177">(Nov 19 2019 at 13:24)</a>:</h4>
<p>(and thanks)</p>



<a name="181110202"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181110202" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181110202">(Nov 19 2019 at 13:24)</a>:</h4>
<p>I'll check with Niko later, the hackathon should start again real soon</p>



<a name="181111426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181111426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181111426">(Nov 19 2019 at 13:40)</a>:</h4>
<p>ah but maybe it's closer to the ConstraintGraph than this</p>



<a name="181113465"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113465" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113465">(Nov 19 2019 at 14:07)</a>:</h4>
<p>Hey <span class="user-mention" data-user-id="116113">@lqd</span></p>



<a name="181113473"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113473" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113473">(Nov 19 2019 at 14:07)</a>:</h4>
<p>hello :)</p>



<a name="181113475"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113475" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113475">(Nov 19 2019 at 14:07)</a>:</h4>
<p>Do you mean that you are trying to generate the <code>known_subset</code> facts?</p>



<a name="181113483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113483">(Nov 19 2019 at 14:07)</a>:</h4>
<p>yes</p>



<a name="181113540"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113540" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113540">(Nov 19 2019 at 14:08)</a>:</h4>
<p>I think I got the placeholder loans done correctly, and was trying to do the known_subsets</p>



<a name="181113556"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113556" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113556">(Nov 19 2019 at 14:08)</a>:</h4>
<p>OK, one sec, let me point you at the right place</p>



<a name="181113584"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113584" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113584">(Nov 19 2019 at 14:09)</a>:</h4>
<p>yay :) thanks</p>



<a name="181113816"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113816" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113816">(Nov 19 2019 at 14:11)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> so the thing we want is the <code>universal_region_relations</code></p>



<a name="181113841"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113841" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113841">(Nov 19 2019 at 14:11)</a>:</h4>
<p>and in particular the <code>outlives</code> field</p>



<a name="181113876"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113876" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113876">(Nov 19 2019 at 14:12)</a>:</h4>
<p>yeah that was I was looking at earlier</p>



<a name="181113952"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113952" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113952">(Nov 19 2019 at 14:12)</a>:</h4>
<p>it seems like the <code>TransitiveRelation</code> type doesn't have a way to "iterate" over the core relations</p>



<a name="181113956"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113956" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113956">(Nov 19 2019 at 14:12)</a>:</h4>
<p>but it seemed like there was only a way to check if a regionvid pair was a known subset but not iterate over all known ones</p>



<a name="181113989"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113989" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113989">(Nov 19 2019 at 14:13)</a>:</h4>
<p>yes, that's correct, but we could add one</p>



<a name="181113999"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181113999" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181113999">(Nov 19 2019 at 14:13)</a>:</h4>
<p>we basically want to expose the <code>edges</code> field</p>



<a name="181114014"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114014" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114014">(Nov 19 2019 at 14:13)</a>:</h4>
<p>maybe add a method like this</p>



<a name="181114101"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114101" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114101">(Nov 19 2019 at 14:14)</a>:</h4>
<div class="codehilite"><pre><span></span><span class="w">    </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">edges</span><span class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nc">impl</span><span class="w"> </span><span class="nb">Iterator</span><span class="o">&lt;</span><span class="n">Item</span><span class="o">=</span><span class="p">(</span><span class="o">&amp;</span><span class="n">T</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">T</span><span class="p">)</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">        </span><span class="bp">self</span><span class="p">.</span><span class="n">edges</span><span class="w"></span>
<span class="w">            </span><span class="p">.</span><span class="n">iter</span><span class="p">()</span><span class="w"></span>
<span class="w">            </span><span class="p">.</span><span class="n">map</span><span class="p">(</span><span class="o">|</span><span class="n">edge</span><span class="o">|</span><span class="w"> </span><span class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span class="p">.</span><span class="n">elements</span><span class="p">[</span><span class="n">edge</span><span class="p">.</span><span class="n">source</span><span class="p">],</span><span class="w"> </span><span class="o">&amp;</span><span class="bp">self</span><span class="p">.</span><span class="n">elements</span><span class="p">[</span><span class="n">edge</span><span class="p">.</span><span class="n">target</span><span class="p">]))</span><span class="w"></span>
<span class="w">    </span><span class="p">}</span><span class="w"></span>
</pre></div>



<a name="181114102"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114102" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114102">(Nov 19 2019 at 14:14)</a>:</h4>
<p>ah yes seems straightforward</p>



<a name="181114118"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114118" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114118">(Nov 19 2019 at 14:14)</a>:</h4>
<p>(with a suitable comment)</p>



<a name="181114125"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114125" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114125">(Nov 19 2019 at 14:14)</a>:</h4>
<p>in particular to clarify that this does not give the <em>transitive</em> relation</p>



<a name="181114133"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114133" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114133">(Nov 19 2019 at 14:14)</a>:</h4>
<p>maybe a name like <code>kernel_edges</code> or something</p>



<a name="181114149"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114149" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114149">(Nov 19 2019 at 14:15)</a>:</h4>
<p>I guess "edge" is a funny name</p>



<a name="181114152"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114152" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114152">(Nov 19 2019 at 14:15)</a>:</h4>
<p>takes a very graph-like view</p>



<a name="181114168"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114168" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114168">(Nov 19 2019 at 14:15)</a>:</h4>
<p>but anyway you get the idea</p>



<a name="181114178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114178">(Nov 19 2019 at 14:15)</a>:</h4>
<p>yeah :) thanks !</p>



<a name="181114259"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114259" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114259">(Nov 19 2019 at 14:16)</a>:</h4>
<p>it could be confusing that this method of <code>TransitiveRelation</code> does not give transitive results if the naming/doc is not very clear</p>



<a name="181114286"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114286" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114286">(Nov 19 2019 at 14:16)</a>:</h4>
<p>exactly, but I think with suitable naming it seems fine</p>



<a name="181114469"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181114469" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181114469">(Nov 19 2019 at 14:18)</a>:</h4>
<p>yeah :)</p>



<a name="181123424"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181123424" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181123424">(Nov 19 2019 at 15:43)</a>:</h4>
<p>progress, it seems to generate both <code>placeholder</code>s and <code>known_subset</code>s facts</p>



<a name="181123991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181123991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181123991">(Nov 19 2019 at 15:48)</a>:</h4>
<p>ofc it didn't magically fix <code>DatafrogOpt</code> apparently not computing the subset errors (leaning more and more towards your idea of forgetting it for a while Niko ;)</p>



<a name="181131163"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131163" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131163">(Nov 19 2019 at 16:53)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> I'm going crazy renaming things</p>



<a name="181131173"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131173" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131173">(Nov 19 2019 at 16:53)</a>:</h4>
<p>some of these names I don't like</p>



<a name="181131177"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131177" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131177">(Nov 19 2019 at 16:53)</a>:</h4>
<div class="codehilite"><pre><span></span>known_placeholder_subset
</pre></div>



<a name="181131186"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131186" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131186">(Nov 19 2019 at 16:54)</a>:</h4>
<p>e.g. I don't think that's right, but I think it should have the term placeholder in it somehow</p>



<a name="181131249"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131249" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131249">(Nov 19 2019 at 16:54)</a>:</h4>
<p>it's true that it's missing</p>



<a name="181131261"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131261" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131261">(Nov 19 2019 at 16:54)</a>:</h4>
<p>otherwise it's too close to the regular subset relation</p>



<a name="181131266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131266">(Nov 19 2019 at 16:54)</a>:</h4>
<p>if it were me it'd be</p>



<a name="181131277"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131277" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131277">(Nov 19 2019 at 16:54)</a>:</h4>
<div class="codehilite"><pre><span></span>placeholder_known_to_contain
</pre></div>



<a name="181131306"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131306" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131306">(Nov 19 2019 at 16:55)</a>:</h4>
<p>but I sometimes get pushback for my wordy names :)</p>



<a name="181131327"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131327" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131327">(Nov 19 2019 at 16:55)</a>:</h4>
<p>it's not that bad !</p>



<a name="181131339"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131339" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131339">(Nov 19 2019 at 16:55)</a>:</h4>
<p><code>placeholder_origin_known_to_contain</code></p>



<a name="181131354"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131354" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131354">(Nov 19 2019 at 16:55)</a>:</h4>
<p>:)</p>



<a name="181131365"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131365" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131365">(Nov 19 2019 at 16:56)</a>:</h4>
<p>it doesn't quite work for subset</p>



<a name="181131418"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131418" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131418">(Nov 19 2019 at 16:56)</a>:</h4>
<p><code>placeholder_known_to_be_subset</code> is awkward even for me</p>



<a name="181131430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131430">(Nov 19 2019 at 16:56)</a>:</h4>
<p>I guess <code>known_placeholder_subset</code> is ok</p>



<a name="181131461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131461">(Nov 19 2019 at 16:56)</a>:</h4>
<p>yeah it's still short but conveys the same info</p>



<a name="181131568"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131568" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131568">(Nov 19 2019 at 16:58)</a>:</h4>
<p>I was once toying around with <code>declared</code> as a replacement for <code>known</code></p>



<a name="181131608"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131608" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131608">(Nov 19 2019 at 16:58)</a>:</h4>
<p>mm I like that</p>



<a name="181131642"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131642" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131642">(Nov 19 2019 at 16:58)</a>:</h4>
<p>to really fit our new conventions</p>



<a name="181131651"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131651" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131651">(Nov 19 2019 at 16:58)</a>:</h4>
<p><code>subset</code> should probably be <code>subset_on_entry</code> or something</p>



<a name="181131667"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131667" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131667">(Nov 19 2019 at 16:59)</a>:</h4>
<p>argh, I have to run, I'll try to finish up the ones I'm doing now</p>



<a name="181131678"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131678" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131678">(Nov 19 2019 at 16:59)</a>:</h4>
<p>the hackmd is basically done modulo naming tweaks I think</p>



<a name="181131690"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131690" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131690">(Nov 19 2019 at 16:59)</a>:</h4>
<p>it includes the liveness/init rules from <span class="user-mention" data-user-id="204115">@Albin Stjerna</span>'s branch</p>



<a name="181131697"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131697" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131697">(Nov 19 2019 at 16:59)</a>:</h4>
<p>nice ! sorry I wasn't able to follow much (if any) of what was going on :/</p>



<a name="181131702"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131702" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131702">(Nov 19 2019 at 16:59)</a>:</h4>
<p>which I effectively reviewed, I guess</p>



<a name="181131739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131739">(Nov 19 2019 at 16:59)</a>:</h4>
<p>I've seen you two have made a lot of concrete progress and that's awesome</p>



<a name="181131994"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181131994" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181131994">(Nov 19 2019 at 17:02)</a>:</h4>
<p>I'm myself trying to emit subset_errors in <code>check_universal_regions</code> rn</p>



<a name="181132011"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181132011" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181132011">(Nov 19 2019 at 17:02)</a>:</h4>
<p>nice</p>



<a name="181132075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181132075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181132075">(Nov 19 2019 at 17:03)</a>:</h4>
<p>I was bit by the variants again (in that the default, <code>Hybrid</code> doesn't compute subset errors) ;)</p>



<a name="181132166"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181132166" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181132166">(Nov 19 2019 at 17:04)</a>:</h4>
<p>heh</p>



<a name="181132172"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181132172" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181132172">(Nov 19 2019 at 17:04)</a>:</h4>
<p>yeah this is why I wanted to try and pull back to fewer variants</p>



<a name="181132366"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181132366" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181132366">(Nov 19 2019 at 17:06)</a>:</h4>
<p>and we haven't even landed the equality one yet</p>



<a name="181132403"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181132403" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181132403">(Nov 19 2019 at 17:07)</a>:</h4>
<p>(or a reworking of the Naive rules towards that model, ofc)</p>



<a name="181132577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181132577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181132577">(Nov 19 2019 at 17:09)</a>:</h4>
<p>ok, I gotta run for today I think</p>



<a name="181132719"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181132719" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181132719">(Nov 19 2019 at 17:10)</a>:</h4>
<p><span aria-label="wave" class="emoji emoji-1f44b" role="img" title="wave">:wave:</span></p>



<a name="181132728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181132728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181132728">(Nov 19 2019 at 17:10)</a>:</h4>
<p>cheers Niko, thanks for today</p>



<a name="181138677"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181138677" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181138677">(Nov 19 2019 at 18:13)</a>:</h4>
<p>haha my lone example emits subset errors, we'll see how it fares over the ui tests</p>



<a name="181142063"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181142063" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181142063">(Nov 19 2019 at 18:49)</a>:</h4>
<p>nice!</p>



<a name="181144592"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181144592" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181144592">(Nov 19 2019 at 19:15)</a>:</h4>
<p>tbf it’s all thanks to you, your notes were spot on</p>



<a name="181144998"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181144998" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181144998">(Nov 19 2019 at 19:19)</a>:</h4>
<p>assuming the ui tests work out, and if we say let’s focus on the naive rules first, we could merge the polonius side tomorrow and publish a new version, to quickly update the rustc branch and open the rustc-side PR for review</p>



<a name="181145195"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181145195" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181145195">(Nov 19 2019 at 19:21)</a>:</h4>
<p>awesome!</p>



<a name="181145200"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181145200" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181145200">(Nov 19 2019 at 19:21)</a>:</h4>
<p>glad the notes were helpful :)</p>



<a name="181163023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181163023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181163023">(Nov 19 2019 at 22:52)</a>:</h4>
<p>I don't have access to the machine running the ui tests now, but I think the work we mentioned for the polonius side has been done. So I've pushed everything and marked <a href="https://github.com/rust-lang/polonius/pull/137" target="_blank" title="https://github.com/rust-lang/polonius/pull/137">https://github.com/rust-lang/polonius/pull/137</a> as ready for review: all the new work following the previous review starts at commit 8ecd7ff  (so around 12 new commits), and with a slight summary in <a href="https://github.com/rust-lang/polonius/pull/137#issuecomment-555751084" target="_blank" title="https://github.com/rust-lang/polonius/pull/137#issuecomment-555751084">this comment</a></p>



<a name="181163793"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181163793" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181163793">(Nov 19 2019 at 23:04)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> <span aria-label="tada" class="emoji emoji-1f389" role="img" title="tada">:tada:</span></p>



<a name="181163844"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181163844" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181163844">(Nov 19 2019 at 23:05)</a>:</h4>
<p>well, we still need to see the results of the ui tests :)</p>



<a name="181163865"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181163865" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181163865">(Nov 19 2019 at 23:06)</a>:</h4>
<p>but progress yay</p>



<a name="181164103"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181164103" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181164103">(Nov 19 2019 at 23:08)</a>:</h4>
<p>(bringing at least some of the ui tests as datasets + unit tests in the polonius repo maybe also be a good idea)</p>



<a name="181186648"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181186648" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181186648">(Nov 20 2019 at 08:02)</a>:</h4>
<blockquote>
<p>(bringing at least some of the ui tests as datasets + unit tests in the polonius repo maybe also be a good idea)</p>
</blockquote>
<p>I think I have some of them already, but I've found it a bit hard to make unit tests out of code examples. I think that's <em>also</em> an important focus for the future; fixing test ergonomics</p>



<a name="181186663"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181186663" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181186663">(Nov 20 2019 at 08:03)</a>:</h4>
<p>I'd like testing to be where I can type <code>cargo test</code> and be pretty sure I didn't break anything if they pass</p>



<a name="181187169"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187169" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187169">(Nov 20 2019 at 08:13)</a>:</h4>
<p>I mean specifically bringing ones testing subset errors</p>



<a name="181187322"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187322" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187322">(Nov 20 2019 at 08:16)</a>:</h4>
<p>I've made a couple tries in this PR at some of the ergonomics issues I had writing tests (and no tries at reorg but we'll need to do it as well), some of <a href="https://github.com/rust-lang/polonius/pull/137/files?file-filters%5B%5D=.rs#diff-c5fc4beef0f03493c2e9a9c876073f0fR589-R615" target="_blank" title="https://github.com/rust-lang/polonius/pull/137/files?file-filters%5B%5D=.rs#diff-c5fc4beef0f03493c2e9a9c876073f0fR589-R615">https://github.com/rust-lang/polonius/pull/137/files?file-filters%5B%5D=.rs#diff-c5fc4beef0f03493c2e9a9c876073f0fR589-R615</a> seems easily extensible to more of our use cases, what do you think ?</p>



<a name="181187343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187343">(Nov 20 2019 at 08:17)</a>:</h4>
<p>NB the things I have been working on doesn't even have support in polonius-parser yet err</p>



<a name="181187352"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187352" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187352">(Nov 20 2019 at 08:17)</a>:</h4>
<p>(we also need to remove some of the existing inputs, I'm not sure they're all super useful)</p>



<a name="181187411"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187411" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187411">(Nov 20 2019 at 08:18)</a>:</h4>
<p>Haha honestly I didn't look at the test changes :)</p>



<a name="181187492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187492">(Nov 20 2019 at 08:20)</a>:</h4>
<p>But it looks good!</p>



<a name="181187504"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187504" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187504">(Nov 20 2019 at 08:21)</a>:</h4>
<p>the ones testing an <code>./inputs</code> dataset are a bit tedious to write for sure <a href="https://github.com/rust-lang/polonius/pull/137/files?file-filters%5B%5D=.rs#diff-c5fc4beef0f03493c2e9a9c876073f0fR638-R666" target="_blank" title="https://github.com/rust-lang/polonius/pull/137/files?file-filters%5B%5D=.rs#diff-c5fc4beef0f03493c2e9a9c876073f0fR638-R666">https://github.com/rust-lang/polonius/pull/137/files?file-filters%5B%5D=.rs#diff-c5fc4beef0f03493c2e9a9c876073f0fR638-R666</a> so I'm not sure about those, but matches your experience, we'll have to work out a way of making them a bit easier to test I totally agree</p>



<a name="181187514"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187514" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187514">(Nov 20 2019 at 08:21)</a>:</h4>
<p>It's even worse with liveness and still worse with move paths</p>



<a name="181187518"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187518" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187518">(Nov 20 2019 at 08:21)</a>:</h4>
<p>I'm not even sure how to represent those</p>



<a name="181187583"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187583" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187583">(Nov 20 2019 at 08:22)</a>:</h4>
<p>there's a lot of desugaring and interning layers between what we're expressing in the initial rust test code and the data available to us</p>



<a name="181187640"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187640" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187640">(Nov 20 2019 at 08:23)</a>:</h4>
<p>maybe some mix of using the parser to lower fragments of what we mean / need to assert, and looking for that somehow in the existing data I dunno, but yeah you've mentioned before it's a bit tough, and not just ergonomically</p>



<a name="181187713"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187713" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187713">(Nov 20 2019 at 08:24)</a>:</h4>
<p>it seems like an important topic to tackle as part of the correctness push in any case</p>



<a name="181187786"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181187786" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181187786">(Nov 20 2019 at 08:26)</a>:</h4>
<p>Yes!</p>



<a name="181188138"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181188138" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181188138">(Nov 20 2019 at 08:32)</a>:</h4>
<p>(maybe we could also use a combination of the nll facts <em>and</em> a <code>-Zdump-mir=polonius</code> which can contain some of the data in the richer form usable in tests, e.g. user-facing origin names; or in some cases, also having some of rustc's machinery for comparing the user-facing compiler output, messages and errors, rather than only polonius output; additionally CI could also try to always run rustc tests as well)</p>



<a name="181188468"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181188468" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181188468">(Nov 20 2019 at 08:39)</a>:</h4>
<p>The rustc CI tests will definitely be easier to run automatically once we have a somewhat stable API against rustc</p>



<a name="181193690"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181193690" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181193690">(Nov 20 2019 at 10:05)</a>:</h4>
<p>ui tests results: 14 failures, some seem easy, I'll push the blessed tests in a bit</p>



<a name="181194063"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181194063" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181194063">(Nov 20 2019 at 10:10)</a>:</h4>
<p>there are a 6 cases of "test x has been running for over 60 seconds" (but that's probably just the Naive variant, rather than subset errors per se; and some of cases could also be related to fact generation especially the OOM-happy materializing of subsets at all points in the cfg -- edit: there's definitely 2-3 times where it shortly froze my computer on these alloc-heavy fact gen cases)</p>



<a name="181198022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181198022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181198022">(Nov 20 2019 at 11:14)</a>:</h4>
<p>to put that in perspective until I upload the blessed output, using the Hybrid variant which doesn't compute subset errors:</p>
<ul>
<li>250 test failures</li>
<li>anecdata: here, only 1 case of "test has been running over 60 seconds"</li>
<li>approximately the same runtime (as I was mentioning yesterday). This machine is not particularly quiet but apart from the weirdness above, the full, clean, compare-mode (so that includes the regular ui mode) ran around &lt; 2mins faster than using the Naive variant: around 21 to around 22 mins.</li>
</ul>



<a name="181199420"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181199420" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181199420">(Nov 20 2019 at 11:42)</a>:</h4>
<p>pushed <a href="https://github.com/lqd/rust/tree/placeholder_loans" target="_blank" title="https://github.com/lqd/rust/tree/placeholder_loans">https://github.com/lqd/rust/tree/placeholder_loans</a>, blessed output for the 14 failures <a href="https://github.com/lqd/rust/commit/2fce903fa86d1ca37f155d08367116fd150eb3a8" target="_blank" title="https://github.com/lqd/rust/commit/2fce903fa86d1ca37f155d08367116fd150eb3a8">here</a> but better seen as this .stderr to .polonius.stderr diff <a href="https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70" target="_blank" title="https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70">https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70</a>. </p>
<p>Some of the lifetime notes are duplicated (10 of the 14 failures), there's of course a special casing for 'static that current polonius errors ignore (2 failures; but in general I have a vague feeling something's off in Polonius wrt 'static), etc. Not so bad imo. (The one looking the most worthy of immediate investigation seems to be the hrtb perfect forwarding one ?)</p>



<a name="181209938"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181209938" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181209938">(Nov 20 2019 at 14:10)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> let me take a look</p>



<a name="181209944"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181209944" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181209944">(Nov 20 2019 at 14:10)</a>:</h4>
<p>it sounded like it was plausible to remove the datafrog-opt and friends</p>



<a name="181209948"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181209948" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181209948">(Nov 20 2019 at 14:10)</a>:</h4>
<p>from what you said</p>



<a name="181209962"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181209962" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181209962">(Nov 20 2019 at 14:10)</a>:</h4>
<p>we could for the time being add <code>skip-polonius</code> annotations to the tests that are timing out and try to address them separately</p>



<a name="181209967"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181209967" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181209967">(Nov 20 2019 at 14:10)</a>:</h4>
<p>yeah, or redirect them all to <code>Naive</code></p>



<a name="181209987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181209987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181209987">(Nov 20 2019 at 14:11)</a>:</h4>
<p>I don't understand 'redirect them all..' oh, you mean in polonius</p>



<a name="181209998"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181209998" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181209998">(Nov 20 2019 at 14:11)</a>:</h4>
<p>yeah</p>



<a name="181210011"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181210011" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181210011">(Nov 20 2019 at 14:11)</a>:</h4>
<p>yeah, that would be ok too</p>



<a name="181210035"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181210035" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181210035">(Nov 20 2019 at 14:11)</a>:</h4>
<p>the big materializing of subset relations is going to be the more annoying part of this all endeavour</p>



<a name="181210087"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181210087" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181210087">(Nov 20 2019 at 14:12)</a>:</h4>
<p>(which we/I might have referred to as the Location::All hack)</p>



<a name="181210526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181210526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181210526">(Nov 20 2019 at 14:17)</a>:</h4>
<p>hmm</p>



<a name="181210533"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181210533" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181210533">(Nov 20 2019 at 14:17)</a>:</h4>
<p>yes, I want to get rid of <code>Location::All</code></p>



<a name="181210537"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181210537" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181210537">(Nov 20 2019 at 14:17)</a>:</h4>
<p>I totally forget what made that hard</p>



<a name="181210593"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181210593" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181210593">(Nov 20 2019 at 14:18)</a>:</h4>
<p>I remember I had a branch that did so but it had a few problems</p>



<a name="181210598"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181210598" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181210598">(Nov 20 2019 at 14:18)</a>:</h4>
<p>remind me, <span class="user-mention" data-user-id="116113">@lqd</span>, are we doing that in rustc now?</p>



<a name="181210605"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181210605" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181210605">(Nov 20 2019 at 14:18)</a>:</h4>
<p>it's <a href="https://github.com/rust-lang/rust/blob/8301de16dafc81a3b5d94aa0707ad83bdb56a599/src/librustc_mir/borrow_check/nll/type_check/mod.rs#L229-L233" target="_blank" title="https://github.com/rust-lang/rust/blob/8301de16dafc81a3b5d94aa0707ad83bdb56a599/src/librustc_mir/borrow_check/nll/type_check/mod.rs#L229-L233">this</a> right ?</p>



<a name="181210987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181210987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181210987">(Nov 20 2019 at 14:23)</a>:</h4>
<p>looks right</p>



<a name="181211005"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211005" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211005">(Nov 20 2019 at 14:23)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> I'm reading your branch now, it looks quite good</p>



<a name="181211029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211029">(Nov 20 2019 at 14:23)</a>:</h4>
<p>(and one of the reasons why anything "everywhere in the CFG" scares me a bit ;) even rustc tests, which could generally be seen as small-ish, have hundreds of thousands of outlives constraints, over dozens of thousands of cfg nodes; -- and I'm not even talking about macro heavy code we see in the wild but have some stats on)</p>



<a name="181211116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211116">(Nov 20 2019 at 14:24)</a>:</h4>
<p>are you reading the rustc branch or the polonius PR ?</p>



<a name="181211685"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211685" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211685">(Nov 20 2019 at 14:29)</a>:</h4>
<p>rustc branch</p>



<a name="181211694"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211694" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211694">(Nov 20 2019 at 14:29)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> yeah we should maybe take some time to review a beter way to handle "outlives-all"</p>



<a name="181211698"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211698" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211698">(Nov 20 2019 at 14:29)</a>:</h4>
<p>I mean for one thing</p>



<a name="181211705"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211705" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211705">(Nov 20 2019 at 14:29)</a>:</h4>
<p>we could incorporate it into the rules readily enough</p>



<a name="181211754"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211754" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211754">(Nov 20 2019 at 14:30)</a>:</h4>
<p>though with a bit of .. duplication</p>



<a name="181211774"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211774" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211774">(Nov 20 2019 at 14:30)</a>:</h4>
<p>e.g., it's basically a <code>a; b</code> sort of thing</p>



<a name="181211781"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211781" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211781">(Nov 20 2019 at 14:30)</a>:</h4>
<p>the same thing we did with <code>placeholder</code></p>



<a name="181211789"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211789" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211789">(Nov 20 2019 at 14:30)</a>:</h4>
<p>but I don't love this sol'n</p>



<a name="181211790"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211790" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211790">(Nov 20 2019 at 14:30)</a>:</h4>
<p>I thought about that but was hoping it wouldn't just move the OOM from fact generation in rustc, to polonius</p>



<a name="181211808"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211808" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211808">(Nov 20 2019 at 14:30)</a>:</h4>
<p>yes, exactly</p>



<a name="181211830"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211830" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211830">(Nov 20 2019 at 14:30)</a>:</h4>
<p>including via <code>equal</code> origins (which most of these are)</p>



<a name="181211888"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211888" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211888">(Nov 20 2019 at 14:31)</a>:</h4>
<p>the rustc changes look good</p>



<a name="181211892"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211892" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211892">(Nov 20 2019 at 14:31)</a>:</h4>
<p>I didn't review the "--bless" output</p>



<a name="181211909"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211909" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211909">(Nov 20 2019 at 14:31)</a>:</h4>
<p>I guess I should look at the specific test you mentioned?</p>



<a name="181211918"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211918" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211918">(Nov 20 2019 at 14:31)</a>:</h4>
<blockquote>
<p>including via <code>equal</code> origins (which most of these are)</p>
</blockquote>
<p>yes</p>



<a name="181211934"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211934" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211934">(Nov 20 2019 at 14:31)</a>:</h4>
<p>I think we sohuld put off discussing this until we talk about <code>equal</code></p>



<a name="181211985"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181211985" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181211985">(Nov 20 2019 at 14:32)</a>:</h4>
<p>which I suspect we won't quite get to today but that's ok</p>



<a name="181212003"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212003" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212003">(Nov 20 2019 at 14:32)</a>:</h4>
<p>a couple tests are interesting yeah</p>



<a name="181212020"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212020" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212020">(Nov 20 2019 at 14:32)</a>:</h4>
<p>you mentioned some of the higher ranked tests?</p>



<a name="181212041"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212041" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212041">(Nov 20 2019 at 14:32)</a>:</h4>
<p>yeah the hrtb perfect forwarding case</p>



<a name="181212052"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212052" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212052">(Nov 20 2019 at 14:32)</a>:</h4>
<p>which "loses" an error</p>



<a name="181212191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212191">(Nov 20 2019 at 14:34)</a>:</h4>
<p>(the others <em>seem</em> either due to the fact that we might push many duplicate subset errors, because they're propagated along the cfg so we have one at all points where the placeholder loan flowed into an unexpected placeholder; or some behaviour tailored to 'static)</p>



<a name="181212210"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212210" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212210">(Nov 20 2019 at 14:34)</a>:</h4>
<p>looking</p>



<a name="181212215"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212215" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212215">(Nov 20 2019 at 14:34)</a>:</h4>
<p>eg <a href="https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-hrtb-perfect-forwarding-polonius-diff" target="_blank" title="https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-hrtb-perfect-forwarding-polonius-diff">https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-hrtb-perfect-forwarding-polonius-diff</a></p>



<a name="181212292"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212292" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212292">(Nov 20 2019 at 14:35)</a>:</h4>
<p>(if you scroll quickly through the gist you'll see the 10 out of 14 failures being duplicate notes)</p>



<a name="181212355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212355">(Nov 20 2019 at 14:35)</a>:</h4>
<p>hmm</p>



<a name="181212358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212358">(Nov 20 2019 at 14:36)</a>:</h4>
<p>I'm a bit confused</p>



<a name="181212418"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212418" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212418">(Nov 20 2019 at 14:36)</a>:</h4>
<p>looking at <a href="http://hrtb-perfect-forwarding.rs" target="_blank" title="http://hrtb-perfect-forwarding.rs">hrtb-perfect-forwarding.rs</a></p>



<a name="181212422"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212422" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212422">(Nov 20 2019 at 14:36)</a>:</h4>
<p>I see only one ERROR annotation</p>



<a name="181212433"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212433" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212433">(Nov 20 2019 at 14:36)</a>:</h4>
<p>and I see one ERROR in the output in your branch</p>



<a name="181212489"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212489" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212489">(Nov 20 2019 at 14:37)</a>:</h4>
<p>basically the <code>.polonius</code> output looks the same as what I see as <code>.nll</code> output</p>



<a name="181212491"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212491" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212491">(Nov 20 2019 at 14:37)</a>:</h4>
<p>(link is <a href="https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/hrtb/hrtb-perfect-forwarding.rs" target="_blank" title="https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/hrtb/hrtb-perfect-forwarding.rs">https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/hrtb/hrtb-perfect-forwarding.rs</a> if anyone needs it)</p>



<a name="181212517"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212517" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212517">(Nov 20 2019 at 14:37)</a>:</h4>
<p>oh</p>



<a name="181212524"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212524" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212524">(Nov 20 2019 at 14:37)</a>:</h4>
<p>ok ok</p>



<a name="181212527"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212527" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212527">(Nov 20 2019 at 14:37)</a>:</h4>
<p>now I see :)</p>



<a name="181212533"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212533" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212533">(Nov 20 2019 at 14:37)</a>:</h4>
<p>I should've clicked your link</p>



<a name="181212626"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212626" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212626">(Nov 20 2019 at 14:38)</a>:</h4>
<p>hmm that <em>is</em> a bit curious</p>



<a name="181212635"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212635" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212635">(Nov 20 2019 at 14:38)</a>:</h4>
<p>do you know <span class="user-mention" data-user-id="116113">@lqd</span> what the "error tuples" we get out are?</p>



<a name="181212652"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212652" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212652">(Nov 20 2019 at 14:38)</a>:</h4>
<p>(or the input tuples)</p>



<a name="181212665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212665">(Nov 20 2019 at 14:39)</a>:</h4>
<p>/me thinks</p>



<a name="181212666"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212666" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212666">(Nov 20 2019 at 14:39)</a>:</h4>
<p>no but I can find out</p>



<a name="181212681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212681">(Nov 20 2019 at 14:39)</a>:</h4>
<p>ok so</p>



<a name="181212686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212686">(Nov 20 2019 at 14:39)</a>:</h4>
<p>I think I know why this is</p>



<a name="181212703"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212703" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212703">(Nov 20 2019 at 14:39)</a>:</h4>
<p>in short, I think it's because we have to fix the "other side"</p>



<a name="181212718"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212718" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212718">(Nov 20 2019 at 14:39)</a>:</h4>
<p>in other words, I want this setup where chalk ahndles the higher-ranked stuff</p>



<a name="181212726"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212726" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212726">(Nov 20 2019 at 14:39)</a>:</h4>
<p>but right now, some of that work is being pushed to region solving</p>



<a name="181212730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212730">(Nov 20 2019 at 14:39)</a>:</h4>
<p>and polonius is not able to handle it</p>



<a name="181212737"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212737" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212737">(Nov 20 2019 at 14:39)</a>:</h4>
<p>I was expecting something like this with this case</p>



<a name="181212741"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212741" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212741">(Nov 20 2019 at 14:39)</a>:</h4>
<p>(and rightly so)</p>



<a name="181212946"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212946" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212946">(Nov 20 2019 at 14:42)</a>:</h4>
<p>maybe it means the time to experiment with this in chalk is sooner than expected :/</p>



<a name="181212954"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212954" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212954">(Nov 20 2019 at 14:42)</a>:</h4>
<p>yeah, I think the behavior here is expected, and the main question is how to "record it" so we dn't forget about it</p>



<a name="181212959"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212959" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212959">(Nov 20 2019 at 14:42)</a>:</h4>
<p>I actually started some of that experimentation</p>



<a name="181212965"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212965" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212965">(Nov 20 2019 at 14:42)</a>:</h4>
<p>but I've not gotten very far</p>



<a name="181212983"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212983" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212983">(Nov 20 2019 at 14:42)</a>:</h4>
<p>the interesting question is whether I can do some of that in rustc, too</p>



<a name="181212987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181212987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181212987">(Nov 20 2019 at 14:43)</a>:</h4>
<p>in lambda prolog you mean, or chalk ?</p>



<a name="181213006"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213006" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213006">(Nov 20 2019 at 14:43)</a>:</h4>
<p>no, in chalk, just a bit over the last few mornings</p>



<a name="181213009"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213009" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213009">(Nov 20 2019 at 14:43)</a>:</h4>
<p>nice :)</p>



<a name="181213044"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213044" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213044">(Nov 20 2019 at 14:43)</a>:</h4>
<p>we could ignore this test in the polonius compare mode, maybe get the .facts i the polonius repo</p>



<a name="181213093"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213093" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213093">(Nov 20 2019 at 14:44)</a>:</h4>
<p>yes, that seems good</p>



<a name="181213102"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213102" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213102">(Nov 20 2019 at 14:44)</a>:</h4>
<p>or just bless the output and have some issues in the polonius repo</p>



<a name="181213103"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213103" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213103">(Nov 20 2019 at 14:44)</a>:</h4>
<p>well, hmm</p>



<a name="181213107"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213107" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213107">(Nov 20 2019 at 14:44)</a>:</h4>
<p>in general I do not like "ignoring" tests</p>



<a name="181213116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213116">(Nov 20 2019 at 14:44)</a>:</h4>
<p>I might rather open an issue on the polonius repo or something</p>



<a name="181213118"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213118" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213118">(Nov 20 2019 at 14:44)</a>:</h4>
<blockquote>
<p>or just bless the output and have some issues in the polonius repo</p>
</blockquote>
<p>er, yes, that</p>



<a name="181213125"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213125" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213125">(Nov 20 2019 at 14:44)</a>:</h4>
<p>because other blessed output will need to be reviewed by the time we are finished, like we had to do with nlls</p>



<a name="181213139"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213139" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213139">(Nov 20 2019 at 14:44)</a>:</h4>
<p>"les great rendesvous"  or whatever french people say :P</p>



<a name="181213143"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213143" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213143">(Nov 20 2019 at 14:44)</a>:</h4>
<p>(rn it's mostly diagnostics ofc)</p>



<a name="181213151"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213151" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213151">(Nov 20 2019 at 14:44)</a>:</h4>
<p>lol</p>



<a name="181213153"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213153" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213153">(Nov 20 2019 at 14:45)</a>:</h4>
<p>I forget the phrase, though I've heard it...</p>



<a name="181213164"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213164" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213164">(Nov 20 2019 at 14:45)</a>:</h4>
<p>les grands esprits se rencontrent ?</p>



<a name="181213170"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213170" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213170">(Nov 20 2019 at 14:45)</a>:</h4>
<p>(great minds think alike)</p>



<a name="181213209"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213209" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213209">(Nov 20 2019 at 14:45)</a>:</h4>
<p>that's the one</p>



<a name="181213262"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213262" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213262">(Nov 20 2019 at 14:46)</a>:</h4>
<p>:)</p>



<a name="181213266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213266">(Nov 20 2019 at 14:46)</a>:</h4>
<p>anyway I like opening issues</p>



<a name="181213268"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213268" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213268">(Nov 20 2019 at 14:46)</a>:</h4>
<p>let's do this for this test</p>



<a name="181213271"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213271" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213271">(Nov 20 2019 at 14:46)</a>:</h4>
<p>ignoring tests are "... too quiet"</p>



<a name="181213275"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213275" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213275">(Nov 20 2019 at 14:46)</a>:</h4>
<p>easily forgotten</p>



<a name="181213290"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213290" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213290">(Nov 20 2019 at 14:46)</a>:</h4>
<p>plus it's good to know if the output changes more</p>



<a name="181213291"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213291" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213291">(Nov 20 2019 at 14:46)</a>:</h4>
<p>and we'll need some for higher ranked subtyping I assume, at the very least to test it....</p>



<a name="181213365"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213365" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213365">(Nov 20 2019 at 14:47)</a>:</h4>
<p>a couple of the other failures are related to 'static, eg the first 2: <a href="https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-closure-substs-polonius-diff" target="_blank" title="https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-closure-substs-polonius-diff">https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-closure-substs-polonius-diff</a> and <a href="https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-error-handling-polonius-diff" target="_blank" title="https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-error-handling-polonius-diff">https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-error-handling-polonius-diff</a></p>



<a name="181213377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213377">(Nov 20 2019 at 14:47)</a>:</h4>
<p>yeah I saw you said you suspected something about <code>'static</code></p>



<a name="181213459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213459">(Nov 20 2019 at 14:48)</a>:</h4>
<p>yeah, in another context, I added some assertions to rustc checking errors in the polonius output (illegal acess errors, not subset ones)</p>



<a name="181213478"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213478" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213478">(Nov 20 2019 at 14:48)</a>:</h4>
<p>and it seemed like polonius was finding errors, maybe it was about statics/consts</p>



<a name="181213502"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213502" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213502">(Nov 20 2019 at 14:49)</a>:</h4>
<p>but rustc wasn't asking for those in the output so that was weird: no rustc errors, and still polonius computed error tuples</p>



<a name="181213519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213519">(Nov 20 2019 at 14:49)</a>:</h4>
<p>so I'll definitely want to revisit this later</p>



<a name="181213542"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213542" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213542">(Nov 20 2019 at 14:49)</a>:</h4>
<p>in today's cases however it seem mostly related to origins which outlive 'static ?</p>



<a name="181213628"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213628" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213628">(Nov 20 2019 at 14:50)</a>:</h4>
<p>(or _are_ 'static)</p>



<a name="181213792"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181213792" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181213792">(Nov 20 2019 at 14:52)</a>:</h4>
<p>I'm not sure if those should emit a subset error with ReStatic or something ?</p>



<a name="181214016"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214016" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214016">(Nov 20 2019 at 14:54)</a>:</h4>
<p>those diffs</p>



<a name="181214021"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214021" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214021">(Nov 20 2019 at 14:54)</a>:</h4>
<p>I'm not 100% sure what to make of them</p>



<a name="181214076"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214076" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214076">(Nov 20 2019 at 14:55)</a>:</h4>
<p>in the first case, there is an extra error, right?</p>



<a name="181214096"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214096" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214096">(Nov 20 2019 at 14:55)</a>:</h4>
<p>two extra errors</p>



<a name="181214111"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214111" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214111">(Nov 20 2019 at 14:55)</a>:</h4>
<p>the first error does not look wrong to me</p>



<a name="181214124"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214124" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214124">(Nov 20 2019 at 14:55)</a>:</h4>
<p>in other words</p>



<a name="181214129"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214129" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214129">(Nov 20 2019 at 14:55)</a>:</h4>
<div class="codehilite"><pre><span></span><span class="gd">--- ./src/test/ui/nll/user-annotations/closure-substs.stderr    2019-04-23 15:38:28.770932800 +0200</span>
<span class="gi">+++ ./src/test/ui/nll/user-annotations/closure-substs.polonius.stderr   2019-11-20 12:16:21.782801300 +0100</span>
<span class="gu">@@ -16,6 +16,16 @@</span>
    |                ^ returning this value requires that `&#39;1` must outlive `&#39;static`

 error: lifetime may not live long enough
<span class="gi">+  --&gt; $DIR/closure-substs.rs:15:16</span>
<span class="gi">+   |</span>
<span class="gi">+LL |     |x: &amp;i32| -&gt; &amp;&#39;static i32 {</span>
<span class="gi">+   |         -        ------------ return type of closure is &amp;&#39;2 i32</span>
<span class="gi">+   |         |</span>
<span class="gi">+   |         let&#39;s call the lifetime of this reference `&#39;1`</span>
<span class="gi">+LL |         return x;</span>
<span class="gi">+   |                ^ returning this value requires that `&#39;1` must outlive `&#39;2`</span>
<span class="gi">+</span>
<span class="gi">+error: lifetime may not live long enough</span>
   --&gt; $DIR/closure-substs.rs:22:9
    |
</pre></div>



<a name="181214177"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214177" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214177">(Nov 20 2019 at 14:56)</a>:</h4>
<p>this hunk seems "reasonable"</p>



<a name="181214184"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214184" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214184">(Nov 20 2019 at 14:56)</a>:</h4>
<p>i.e., the problem is probably more in error reporting or duplicate detection</p>



<a name="181214205"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214205" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214205">(Nov 20 2019 at 14:56)</a>:</h4>
<p>I guess the same with this one</p>



<a name="181214212"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214212" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214212">(Nov 20 2019 at 14:56)</a>:</h4>
<div class="codehilite"><pre><span></span><span class="gi">+error[E0521]: borrowed data escapes outside of closure</span>
<span class="gi">+  --&gt; $DIR/closure-substs.rs:29:9</span>
<span class="gi">+   |</span>
<span class="gi">+LL |     |x: &amp;i32, b: fn(&amp;&#39;static i32)| {</span>
<span class="gi">+   |      -        - `b` is declared here, outside of the closure body</span>
<span class="gi">+   |      |</span>
<span class="gi">+   |      `x` is a reference that is only valid in the closure body</span>
<span class="gi">+LL |         b(x);</span>
<span class="gi">+   |         ^^^^ `x` escapes the closure body here</span>
<span class="gi">+</span>
<span class="gi">+error: aborting due to 6 previous errors</span>
</pre></div>



<a name="181214216"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214216" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214216">(Nov 20 2019 at 14:56)</a>:</h4>
<p>like, the error as described is ... wrong, but it's "kind of right"</p>



<a name="181214229"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214229" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214229">(Nov 20 2019 at 14:57)</a>:</h4>
<p>here are the first test original stderrs <a href="https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/nll/user-annotations/closure-substs.stderr" target="_blank" title="https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/nll/user-annotations/closure-substs.stderr">https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/nll/user-annotations/closure-substs.stderr</a> vs <a href="https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/nll/user-annotations/closure-substs.polonius.stderr" target="_blank" title="https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/nll/user-annotations/closure-substs.polonius.stderr">https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/nll/user-annotations/closure-substs.polonius.stderr</a></p>



<a name="181214247"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214247" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214247">(Nov 20 2019 at 14:57)</a>:</h4>
<p>i.e., at that spot, the lifetime of <code>x</code> is being related to <code>'static</code>, and I suspect polonius is reporting the right thing, but we're reporting it in a bogus way</p>



<a name="181214333"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214333" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214333">(Nov 20 2019 at 14:58)</a>:</h4>
<p>I'm not totally sure what's up with the error-handling test, that .. hmm. That is going through a complex path for sure.</p>



<a name="181214340"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214340" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214340">(Nov 20 2019 at 14:58)</a>:</h4>
<p>yeah I was thinking that polonius was reporting an error related to the renumbered/freshened region</p>



<a name="181214360"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214360" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214360">(Nov 20 2019 at 14:58)</a>:</h4>
<blockquote>
<p>yeah I was thinking that polonius was reporting an error related to the renumbered/freshened region</p>
</blockquote>
<p>in the closure-substs test?</p>



<a name="181214369"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214369" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214369">(Nov 20 2019 at 14:58)</a>:</h4>
<p>but rustc usually wouldn't maybe do that in diagnostics or something</p>



<a name="181214380"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214380" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214380">(Nov 20 2019 at 14:58)</a>:</h4>
<p>yes</p>



<a name="181214441"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214441" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214441">(Nov 20 2019 at 14:59)</a>:</h4>
<blockquote>
<p>but rustc usually wouldn't maybe do that in diagnostics or something</p>
</blockquote>
<p>yeah Ithink it's a case of doing a slightly different thing than rustc does</p>



<a name="181214453"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214453" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214453">(Nov 20 2019 at 14:59)</a>:</h4>
<p>and our diagnostic handling not being tuned for that</p>



<a name="181214459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214459">(Nov 20 2019 at 14:59)</a>:</h4>
<p>but not a <em>wrong</em> thing</p>



<a name="181214462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214462">(Nov 20 2019 at 14:59)</a>:</h4>
<p>eg rustc would emit restatic in this case but polonius emits the '2 for the same error</p>



<a name="181214469"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214469" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214469">(Nov 20 2019 at 14:59)</a>:</h4>
<p>yeah agreed</p>



<a name="181214480"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214480" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214480">(Nov 20 2019 at 14:59)</a>:</h4>
<p>the other test--</p>



<a name="181214487"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214487" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214487">(Nov 20 2019 at 14:59)</a>:</h4>
<p>let me go look at it</p>



<a name="181214501"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214501" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214501">(Nov 20 2019 at 14:59)</a>:</h4>
<p>we definitely added some custom logic around impl trait with mutiple, unrelated lifetimes</p>



<a name="181214504"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214504" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214504">(Nov 20 2019 at 14:59)</a>:</h4>
<p>probably more about diagnostics and expectations than bugs in polonius</p>



<a name="181214670"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214670" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214670">(Nov 20 2019 at 15:00)</a>:</h4>
<p>egads that test :)</p>



<a name="181214683"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214683" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214683">(Nov 20 2019 at 15:00)</a>:</h4>
<div class="codehilite"><pre><span></span><span class="k">fn</span> <span class="nf">foo</span><span class="o">&lt;</span><span class="na">&#39;a</span><span class="p">,</span><span class="w"> </span><span class="na">&#39;b</span><span class="p">,</span><span class="w"> </span><span class="na">&#39;c</span><span class="o">&gt;</span><span class="p">(</span><span class="n">x</span>: <span class="kp">&amp;</span><span class="nb">&#39;static</span><span class="w"> </span><span class="kt">i32</span><span class="p">,</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">y</span>: <span class="kp">&amp;</span><span class="na">&#39;a</span><span class="w"> </span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nc">E</span><span class="o">&lt;</span><span class="na">&#39;b</span><span class="p">,</span><span class="w"> </span><span class="na">&#39;c</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="c1">//~^ ERROR lifetime may not live long enough</span>
<span class="w">    </span><span class="kd">let</span><span class="w"> </span><span class="n">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">CopyIfEq</span>::<span class="o">&lt;*</span><span class="k">mut</span><span class="w"> </span><span class="n">_</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="k">mut</span><span class="w"> </span><span class="n">_</span><span class="o">&gt;</span><span class="p">(</span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="p">{</span><span class="n">x</span><span class="p">},</span><span class="w"> </span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="n">y</span><span class="p">);</span><span class="w"></span>
<span class="w">    </span><span class="kd">let</span><span class="w"> </span><span class="n">u</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">v</span><span class="p">;</span><span class="w"></span>
<span class="w">    </span><span class="kd">let</span><span class="w"> </span><span class="n">_</span>: <span class="o">*</span><span class="k">mut</span><span class="w"> </span><span class="o">&amp;</span><span class="na">&#39;a</span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">u</span><span class="p">.</span><span class="mi">1</span><span class="p">;</span><span class="w"></span>
<span class="w">    </span><span class="k">unsafe</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">_</span>: <span class="kp">&amp;</span><span class="na">&#39;b</span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">*</span><span class="n">u</span><span class="p">.</span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w">    </span><span class="n">u</span><span class="p">.</span><span class="mi">0</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>



<a name="181214712"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214712" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214712">(Nov 20 2019 at 15:01)</a>:</h4>
<blockquote>
<p>the other test</p>
</blockquote>
<p>diff <a href="https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-error-handling-polonius-diff" target="_blank" title="https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-error-handling-polonius-diff">https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-error-handling-polonius-diff</a><br>
nll <a href="https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/impl-trait/multiple-lifetimes/error-handling.stderr" target="_blank" title="https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/impl-trait/multiple-lifetimes/error-handling.stderr">https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/impl-trait/multiple-lifetimes/error-handling.stderr</a><br>
polonius <a href="https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/impl-trait/multiple-lifetimes/error-handling.polonius.stderr" target="_blank" title="https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/impl-trait/multiple-lifetimes/error-handling.polonius.stderr">https://github.com/lqd/rust/blob/2fce903fa86d1ca37f155d08367116fd150eb3a8/src/test/ui/impl-trait/multiple-lifetimes/error-handling.polonius.stderr</a></p>



<a name="181214748"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214748" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214748">(Nov 20 2019 at 15:01)</a>:</h4>
<p>I remember this being a very carefully crafted bit of code now :)</p>



<a name="181214759"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214759" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214759">(Nov 20 2019 at 15:01)</a>:</h4>
<p>probably by <span class="user-mention" data-user-id="116118">@Matthew Jasper</span></p>



<a name="181214870"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214870" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214870">(Nov 20 2019 at 15:02)</a>:</h4>
<p>probably you :)</p>



<a name="181214960"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181214960" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181214960">(Nov 20 2019 at 15:03)</a>:</h4>
<p>ah and it's about <code>existential type</code></p>



<a name="181215067"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215067" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215067">(Nov 20 2019 at 15:04)</a>:</h4>
<p>yeah so this has tod o with those <code>MemberConstraint</code> things we added</p>



<a name="181215073"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215073" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215073">(Nov 20 2019 at 15:04)</a>:</h4>
<p>obviously polonius knows nothing about them</p>



<a name="181215088"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215088" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215088">(Nov 20 2019 at 15:04)</a>:</h4>
<p>I thnk that's prob ok but I'm trying to bring it a bit back in cache ;)</p>



<a name="181215133"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215133" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215133">(Nov 20 2019 at 15:05)</a>:</h4>
<p>well I suspect this may be something where we want to file an issue and do follow-up</p>



<a name="181215169"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215169" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215169">(Nov 20 2019 at 15:05)</a>:</h4>
<p>alright, that I can do</p>



<a name="181215299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215299">(Nov 20 2019 at 15:06)</a>:</h4>
<p>for the other duplicated diagnostics notes, I wonder if we should just emit one subset error, since we're not using the cfg node where it happens rn</p>



<a name="181215367"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215367" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215367">(Nov 20 2019 at 15:07)</a>:</h4>
<p>ok, I sort of remember now</p>



<a name="181215376"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215376" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215376">(Nov 20 2019 at 15:07)</a>:</h4>
<p>I'll need to look whether check_universal_regions does emit only one such error per unique, not known, free region pair</p>



<a name="181215435"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215435" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215435">(Nov 20 2019 at 15:08)</a>:</h4>
<p>I definitely think we should leave this for follow-up work</p>



<a name="181215440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215440">(Nov 20 2019 at 15:08)</a>:</h4>
<p>but I do think we may have to do <em>something</em></p>



<a name="181215462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215462">(Nov 20 2019 at 15:08)</a>:</h4>
<p>wrt the member constraints you mean ?</p>



<a name="181215470"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215470" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215470">(Nov 20 2019 at 15:08)</a>:</h4>
<p>correct</p>



<a name="181215516"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215516" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215516">(Nov 20 2019 at 15:09)</a>:</h4>
<p>But I also remember thinking that some of the problems here</p>



<a name="181215519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215519">(Nov 20 2019 at 15:09)</a>:</h4>
<p>Got easier in Polonius's model</p>



<a name="181215522"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215522" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215522">(Nov 20 2019 at 15:09)</a>:</h4>
<p>I was sorta hoping we wouldn't have to do anything heh</p>



<a name="181215525"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215525" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215525">(Nov 20 2019 at 15:09)</a>:</h4>
<p>Though damned if I remember why :)</p>



<a name="181215537"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215537" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215537">(Nov 20 2019 at 15:09)</a>:</h4>
<p>:)</p>



<a name="181215547"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215547" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215547">(Nov 20 2019 at 15:09)</a>:</h4>
<p>Well it had to do with the way that polonius origins are sets of loans</p>



<a name="181215562"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215562" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215562">(Nov 20 2019 at 15:09)</a>:</h4>
<p>and the fact that union was a relatively easy concept for us to express</p>



<a name="181215575"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215575" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215575">(Nov 20 2019 at 15:09)</a>:</h4>
<p>that's very true</p>



<a name="181215620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215620">(Nov 20 2019 at 15:10)</a>:</h4>
<p>so maybe we have to do something, but it wouldn't be that big</p>



<a name="181215725"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215725" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215725">(Nov 20 2019 at 15:11)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> I had to run but will be back in a bit</p>



<a name="181215734"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215734" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215734">(Nov 20 2019 at 15:11)</a>:</h4>
<p>so far I think gthis all looks great and we should move forward to landing :)</p>



<a name="181215737"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215737" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215737">(Nov 20 2019 at 15:11)</a>:</h4>
<p>alright :)</p>



<a name="181215791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215791">(Nov 20 2019 at 15:12)</a>:</h4>
<p>awesome</p>



<a name="181215820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215820">(Nov 20 2019 at 15:12)</a>:</h4>
<p>I'll take care of what's missing in the rustc branch</p>



<a name="181215861"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215861" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215861">(Nov 20 2019 at 15:12)</a>:</h4>
<p>(that'll require checking/landing the polonius PR as well ofc)</p>



<a name="181215927"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181215927" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181215927">(Nov 20 2019 at 15:13)</a>:</h4>
<p>rn I'm looking at the filtering we mentioned yesterday, and adapting to support placeholder loans, I think I'm close-ish (edit: then again maybe not)</p>



<a name="181229574"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181229574" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181229574">(Nov 20 2019 at 17:28)</a>:</h4>
<p>(for subset errors whitelisting all placeholders does the trick, even though I'm sure we could tighten this a bit more to only check some placeholders which are not in <code>known_subset</code>, and their loans, etc. the ui tests pass equally well, and on this 8-core machine, clock in at 20mins even with the 6 slow/alloc-heavy tests (this filtering doesn't change those, since it's likely in fact gen, and the filtering is done in polonius instead of rustc) and that was overall similar to the optimized variant)</p>



<a name="181229888"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181229888" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181229888">(Nov 20 2019 at 17:31)</a>:</h4>
<p>(in the same vein, and as I said before, I also applied this to liveness (to limit to "interesting vars", the ones whose uses/drops can derefs these interesting origins) and rustc tests also pass, in around 19mins once again)</p>



<a name="181230203"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181230203" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181230203">(Nov 20 2019 at 17:34)</a>:</h4>
<p>(<del>and if the 2 <code>finished in XXX</code> at the end of the compare mode tests are indeed the run-times of both modes, on this machine the polonius one is around 1.8x</del> -- that doesn't really look like it's that easy, maybe because of parallelization, as the total -- if those are seconds ... -- is like 30 mins but it took 19)</p>



<a name="181231775"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181231775" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181231775">(Nov 20 2019 at 17:51)</a>:</h4>
<p>the subtlety of this (much like the propagation of placeholder loans along the CFG wrt dead code) may also not be particularly covered by all our tests, but if that's interesting to you <span class="user-mention" data-user-id="116009">@nikomatsakis</span> well: <a href="https://github.com/lqd/borrow-check/commits/thats_interesting" target="_blank" title="https://github.com/lqd/borrow-check/commits/thats_interesting">https://github.com/lqd/borrow-check/commits/thats_interesting</a></p>



<a name="181232182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181232182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181232182">(Nov 20 2019 at 17:56)</a>:</h4>
<p>and last time I checked this (and now I'd need to regen the placeholder facts) this takes clap from 9-10s to 600ms (which is in the <code>LocationInsensitive</code> territory)</p>



<a name="181234798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181234798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181234798">(Nov 20 2019 at 18:25)</a>:</h4>
<p>ah I see the duplicate regions relations in the rustc branch are only when using<code>#[rustc_regions]</code>, so while I can deduplicate the subset errors in the polonius equivalent of <code>check_universal_regions</code> (and indeed I have locally), should I <span class="user-mention" data-user-id="116009">@nikomatsakis</span>  ? (or just bless as-is, and create an issue to look at this rustc-internal debug output later)</p>



<a name="181234983"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181234983" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181234983">(Nov 20 2019 at 18:27)</a>:</h4>
<p>(sorry for pinging you btw -- I'll get dinner and finalize this later then)</p>



<a name="181289422"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181289422" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181289422">(Nov 21 2019 at 09:53)</a>:</h4>
<p>(I vote "no": bless the stderrs as-is, and will file an issue and fix <code>#[rustc_regions]</code> later)</p>



<a name="181303952"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181303952" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181303952">(Nov 21 2019 at 13:30)</a>:</h4>
<blockquote>
<p>I'll take care of what's missing in the rustc branch</p>
</blockquote>
<p>I'm not looking forward to how much this will likely clash with my changes to rustc, but I'm ready for a rebase-party</p>



<a name="181304570"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181304570" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181304570">(Nov 21 2019 at 13:38)</a>:</h4>
<p>these rustc changes are all in all pretty minimal so it shouldn't clash a lot (or at all, hopefully)</p>



<a name="181305745"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181305745" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181305745">(Nov 21 2019 at 13:52)</a>:</h4>
<p>:)</p>



<a name="181605205"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181605205" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181605205">(Nov 22 2019 at 02:29)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> I don't quite understand what you are asking me I think I'm happy with "just bless and figure it out"</p>



<a name="181615117"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181615117" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181615117">(Nov 22 2019 at 07:14)</a>:</h4>
<p>it was about the 10 failures which all look like <a href="https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-escape-upvar-nested-polonius-diff" target="_blank" title="https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-escape-upvar-nested-polonius-diff">https://gist.github.com/lqd/7b43ac553f4a27041ca3960e6c5aea70#file-escape-upvar-nested-polonius-diff</a> a lot of duplicate notes in the debug output when using <code>#[rustc_regions]</code>, but OK :)</p>



<a name="181615217"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181615217" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181615217">(Nov 22 2019 at 07:16)</a>:</h4>
<p>I'll bless this all with explanations in the commits, and open tracking issues in the polonius repo. We'll just need to land the polonius side, then I can rebase the rustc branch to open a PR</p>



<a name="181695485"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181695485" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181695485">(Nov 23 2019 at 02:27)</a>:</h4>
<p>(btw, thanks for the review Niko!)</p>



<a name="181696113"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181696113" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181696113">(Nov 23 2019 at 02:47)</a>:</h4>
<p>I'll update the comments and all, merge+release to open the rustc PR, and then help out Albin where I can</p>



<a name="181696585"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181696585" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181696585">(Nov 23 2019 at 03:02)</a>:</h4>
<p>(on that note <span class="user-mention" data-user-id="204115">@Albin Stjerna</span> your latest thesis draft is super cool! I've just started reading this one and the improvements you've been doing are great — also thanks for the classy shoutout to the WG — I'll try to have feedback for you)</p>



<a name="181706123"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181706123" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181706123">(Nov 23 2019 at 08:21)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> Thank you! Also let me know if you prefer other names than lqd :) I feel a lot better about this version of the thesis than the first one.</p>



<a name="181708047"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181708047" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181708047">(Nov 23 2019 at 09:24)</a>:</h4>
<p>(up to you re: name, I don't mind — the non-asciiness can be annoying to type hehe, but it's <a href="https://twitter.com/lqd" target="_blank" title="https://twitter.com/lqd">eg here</a> if you want/need it)</p>



<a name="181958214"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/placeholder%20loans/near/181958214" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanda Stjerna <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/placeholder.20loans.html#181958214">(Nov 26 2019 at 20:04)</a>:</h4>
<p>My keyboard handles far worse than that every day :)</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>